淘天笔试4.10 第一题
凭回忆写的,看提示不让切屏,考试时候没保存
一组数据的时候,多组数据加上for循环就ok了
@Test public void test(){ int [] nums = new int[]{3,2,2,2,1,1,1,3}; int k = 3; Map<Integer,Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; ++i){ map.put(nums[i],map.getOrDefault(nums[i],0)+1); } Set<Integer> set = new HashSet<>(); Arrays.sort(nums); for(int i = nums.length- 1; i >= 0; i--){ if(set.contains(nums[i])){ continue; } set.add(nums[i]); if(map.get(nums[i]) >= k){ System.out.println(nums[i]); return; } int sum = 0; for(int key : map.keySet()){ if(key == nums[i]){ continue; } sum += Math.min(map.get(key),map.get(nums[i])); if(sum >= k-map.get(nums[i])){ System.out.println(nums[i]); return; } } } }#笔试题解#