首页 > 试题广场 >

去除捣乱的报数

[编程题]去除捣乱的报数
  • 热度指数:640 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
猿辅导老师在直播课上和同学们做游戏,让同学们在聊天区报自己的学号,每报一次可以获得一个礼物。但是老师不给报数次数超过了一定的次数的同学发礼物。
现在请你来帮助老师把聊天区的报数数列处理一下。
规定,当发现某个数大于 m 次时,则认定为报数过多,我们需要得到去除这些学生的报数后的报数数列。

输入描述:
第一行:两个数,学生报数总个数n,和允许的最大重复次数 m,以空格分隔
第二行:n个整数,表示学生所有报数数列,以空格分隔,范围是-2147483648~2147483647


输出描述:
只有一行,去除超出m次的报数数字后的报数数列,该数列不改变原报数顺序,数列以空格分隔
示例1

输入

7 2
4 3 3 3 1 5 5

输出

4 1 5 5
示例2

输入

6 3
1 2 2 2 2 2

输出

1

备注:
1 <= n <= 1000
class Solution:
    def remove_count(self, n, m, arr):
        if not arr&nbs***bsp;m <= 0:
            return
        dic = {}
        for i in range(n):
            if arr[i] not in dic:
                dic[arr[i]] = 1
            else:
                dic[arr[i]] += 1
        res = []
        for value in arr:
            if dic[value] <= m:
                res.append(value)
        return res

    
s = input().strip()
n, m = int(s.split()[0]), int(s.split()[1])
s = input().strip()
arr = [int(x) for x in s.split()]
solution = Solution()
res = solution.remove_count(n, m, arr)
print(" ".join(str(x) for x in res))

发表于 2020-08-28 17:19:49 回复(0)
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int arr[n+1];
    for (int i=0;i<n;i++)
        cin>>arr[i];
    unordered_map<int,int> hashMap;
    for(int i=0;i<n;i++)
    {
        hashMap[arr[i]]++;
    }
    for(int i=0;i<n;i++){
        if(hashMap[arr[i]]<=m && hashMap[arr[i]]!=0)
            cout << arr[i] << ' ';
    }
}

发表于 2020-08-17 20:52:17 回复(0)

N, M = list(map(int, input().split(" ")))
li = list(map(int, input().split(" ")))
dictli = {}
for i, item in enumerate(li):
    dictli[item] = dictli.get(item, 0) + 1
 
for i, item in enumerate(li):
    if dictli[item] > M:
        continue
    else:
        print(item, end=" ")

发表于 2020-07-30 10:53:50 回复(0)
function(q,m){
    var a = new Array();
        a = q.split(" ");
            var str="";
            var arr = "";
            for(var i=0;i<a.length;i++)
            {
                var item = a[i];
                var count = 0;
                for(var j=0;j<a.length;j++)
                {
                    if(item === a[j])
                    {
                        count++;
                    }
                }
                if(count>m)
                {
                    str += item +",";
                }
            }
            for(var p=0;p<a.length;p++)
            {
                var t = a[p]+",";
                if(str.indexOf(t)<0)
                {
                    arr += a[p] + " ";
                }
            }

            console.log(arr);
            return arr;
}
发表于 2020-04-26 12:54:06 回复(0)
m, n, r = int(input().split()[1]), input().split(), []
for i in range(len(n)):
    if n.count(n[i]) > m:
        r.append(n[i])
for i in range(len(r)):
    n.remove(r[i])
print(' '.join(n))

发表于 2020-02-21 19:34:05 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        ArrayList<Integer> list = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        for (int i = 0; i < n; i++) {
            int tmp = scanner.nextInt();
            list.add(tmp);
            //当map中有tmp这个键时,map.getOrDefault(tmp, 0)返回tmp对应的值
            //当map中没有tmp这个键时,map.getOrDefault(tmp, 0)返回默认值0
            map.put(tmp, map.getOrDefault(tmp, 0) + 1);
        }
        for (int i = 0; i < list.size(); i++) {
            int times=map.get(list.get(i));
            if(times<=m)
                System.out.print(list.get(i)+" ");
        }
        System.out.println();
        scanner.close();
    }
}
发表于 2020-01-01 18:12:54 回复(0)
//维护一个计数的HashMap即可
import java.util.*;
 
public class Main{
    public static void main(String[] args){
        Scanner input;
        int n, m, i;
        int[] nums;
         
        input = new Scanner(System.in);
        n = input.nextInt();
        m = input.nextInt();
        nums = new int[n];
        for(i = 0; i < n; i++){
            nums[i] = input.nextInt();
        }
        System.out.println(Solution(nums, m));
        input.close();
    }
    
    private static String Solution(int[] nums, int m){
        StringBuilder ans;
        Map<Integer, Integer> map;
        
        ans = new StringBuilder();
        map = new HashMap<>();
        for(int num : nums){
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        for(int i = 0; i < nums.length; i++){
            if(map.get(nums[i]) > m)
                continue;
            ans.append(nums[i]);
            ans.append(" ");
        }
        return ans.toString();
    }
}

发表于 2019-12-23 16:43:34 回复(0)