猿辅导老师在直播课上和同学们做游戏,让同学们在聊天区报自己的学号,每报一次可以获得一个礼物。但是老师不给报数次数超过了一定的次数的同学发礼物。
现在请你来帮助老师把聊天区的报数数列处理一下。
规定,当发现某个数大于 m 次时,则认定为报数过多,我们需要得到去除这些学生的报数后的报数数列。
第一行:两个数,学生报数总个数n,和允许的最大重复次数 m,以空格分隔
第二行:n个整数,表示学生所有报数数列,以空格分隔,范围是-2147483648~2147483647
只有一行,去除超出m次的报数数字后的报数数列,该数列不改变原报数顺序,数列以空格分隔
7 2 4 3 3 3 1 5 5
4 1 5 5
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))
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(); } }
//维护一个计数的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(); } }