不知道堆的我,第二题完全想不到,但是 思路都能AC i

239. 滑动窗口最大值

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
MyQueue myQueue = new MyQueue();
        int max;// 入队
        int[] answer = new int[nums.length - k + 1];
        for (int i = 0; i < k; i++) {
            myQueue.add(nums[i]);
        }
        answer[0] = myQueue.peek();
        for (int i = k; i < nums.length; i++) {
            myQueue.poll(nums[i - k]);
            myQueue.add(nums[i]);
            answer[i - k + 1] = myQueue.peek();
        }
        return answer;
    }
}

class MyQueue {
    Deque<Integer> deque = new LinkedList<>();

    void add(int val) {
        while (!deque.isEmpty() && val > deque.getLast()) {
            deque.removeLast();
        }
        deque.add(val);
    }

    void poll(int val) {
        if (!deque.isEmpty() && val == deque.peek()) {
            deque.poll();
        }
    }

    Integer peek() {
        return deque.peek();
    }
}

347.前 K 个高频元素 (一刷至少需要理解思路)

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            if (!map.containsKey(num)) {
                map.put(num, 1);
            } else {
                map.put(num, map.get(num) + 1);
            }
        }
        PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1] - o2[1];
            }
        });
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (pq.size() < k) {
                pq.add(new int[]{entry.getKey(), entry.getValue()});
            } else {
                if (entry.getValue() > pq.peek()[1]) {
                    pq.poll();
                    pq.add(new int[]{entry.getKey(), entry.getValue()});
                }
            }
        }
        int[] ans = new int[k];
        for (int i = 0; i < k; i++) {
            ans[i] = pq.poll()[0];
        }
        return ans;
        
    }
}
posted @ 2022-12-21 22:13  维萨斯  阅读(14)  评论(0)    收藏  举报