239. 滑动窗口最大值
ArrayDeque<Integer> q = new ArrayDeque<Integer>(); List<Integer> ans = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { while (!q.isEmpty() && q.getLast() < nums[i]) { q.removeLast(); } q.addLast(nums[i]); // / 那么这个时候,还不能去取最大值 if (i < k - 1) { continue; } // 将元素入队 ans.add(q.getFirst()); if (!q.isEmpty() && q.getFirst() == nums[i - k + 1]) { q.removeFirst(); } } // 将ans转换成为数组返回! return ans.stream().mapToInt(Integer::valueOf).toArray();
347.前 K 个高频元素
HashMap<Integer, Integer> map = new HashMap<>(); ArrayList<Integer> ans = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { if (!map.containsKey(nums[i])) { map.put(nums[i], 1); } else { Integer time = map.get(nums[i]); map.put(nums[i], time + 1); } } List<Integer> collect = map.values().stream().collect(Collectors.toList()); List<Integer> content = new ArrayList<>(); collect.sort(Collections.reverseOrder()); for (int i = 0; i < k; i++) { content.add(collect.get(i)); } Set<Map.Entry<Integer, Integer>> entries = map.entrySet(); for (Map.Entry<Integer, Integer> entry : entries) { if (content.contains(entry.getValue())) { if (ans.size() < k) { ans.add(entry.getKey()); } else { return ans.stream().mapToInt(Integer::valueOf).toArray(); } } } return ans.stream().mapToInt(Integer::valueOf).toArray();