239.滑动窗口最大值

import java.util.*;

public class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int maxnums[] = new int[nums.length - k + 1];
        NavigableMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
        for (int i = 0; i < nums.length - k + 1; i++) {
            maxnums[i] = -10001;
            if (i == 0) {
                for (int j = 0; j < k; j++) {
                    if (maxnums[i] <= nums[j]) {
                        maxnums[i] = nums[j];
                    }
                    if (map.containsKey(nums[j])) {
                        map.remove(nums[j]);
                    }
                    map.put(nums[j], j);
                }
            } else {
                if (!map.isEmpty()) {
                    if (map.lastEntry().getKey() == nums[i - 1]) {
                        if (map.lastEntry().getValue() > i - 1) {
                            // map.remove(nums[i - 1]);
                        } else {
                            map.remove(map.lastEntry().getKey());
                        }
                    } else {
                        if (map.get(nums[i - 1]) != null && map.get(nums[i - 1]) == i - 1) {
                            map.remove(nums[i - 1]);
                        }
                    }
                    if (!map.isEmpty()) {
                        maxnums[i] = map.lastEntry().getKey();
                    }
                    if (maxnums[i] <= nums[i + k - 1]) {
                        maxnums[i] = nums[i + k - 1];
                    }
                    map.put(nums[i + k - 1], i + k - 1);
                }
            }
        }
        return maxnums;
    }
}

#华为od#
全部评论

相关推荐

28小凳也想实习:项目不用一个业务一个轮子吗,刷牛客好多人说要一业务一轮子
点赞 评论 收藏
分享
小狗吃臭臭:以后用不到你设计的手机了,可惜!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务