题解 | #滑动窗口的最大值#

滑动窗口的最大值

http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

public class Solution {
    // 若当前最大值的下标在滑动窗口内, 那么 新的最大值的 为 当前滑动窗口最后一个值或者 当前最大值
    // 若当前最大值的下标不在滑动窗口内, 那么在窗口内找最大值
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        int maxIndex = -1;
        ArrayList<Integer> returnList = new ArrayList<>();
        if(size == 0){
            return returnList;
        }
        for(int i = 0; i < num.length - size + 1; i++){
            if(maxIndex >= i && maxIndex <= i + size - 1){ // 最小值下标在当前滑动窗口范围之内
                maxIndex = num[maxIndex] >= num[i + size -1] ? maxIndex : i + size -1;
                returnList.add(num[maxIndex]);
            }else{
                // 在当前窗口内查找最小值
                maxIndex = i;
                for(int j = i + 1; j <= i + size -1; j++){
                    if(num[j] > num[maxIndex]){
                        maxIndex = j;
                    }
                }
                returnList.add(num[maxIndex]);
            }
        }
        return returnList;
    }
}
全部评论

相关推荐

落叶随风呀:学校不好就放两栏,专业能力往前移, 政治面貌不是党员不如不写,籍贯湖南衡阳,或者湖南,浅尝辄止 基本信息排版不够美观,没有对齐 简历上花里胡哨的东西去掉 项目我不评价,因为我能力有限,且对mcu了解不足 但是这份简历掌握的水平,你可以海投试试,工作没问题但是工资应该不会高,因为搞mcu的小公司多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务