猿辅导老师在直播课上和同学们做游戏,让同学们在聊天区报自己的学号,每报一次可以获得一个礼物。但是老师不给报数次数超过了一定的次数的同学发礼物。
现在请你来帮助老师把聊天区的报数数列处理一下。
规定,当发现某个数大于 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
//维护一个计数的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(); } }