剑指offer之滑动窗口的最大值(C++/Java双重实现)

1.问题描述

给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。
示例:
输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
输出: [3,3,5,5,6,7]
解释:
剑指offer之滑动窗口的最大值(C++/Java双重实现)_第1张图片
剑指offer之滑动窗口的最大值(C++/Java双重实现)_第2张图片

2.题目分析

本题直接暴力就行
我们需要知道结果容器里边的元素个数为nums.size()-k+1

3.代码实现

3.1C++代码
class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        if(nums.empty())
        return nums;   
        vector<int> vec(nums.size()-k+1);
        int cnt=0;
        for(int i=0;i<nums.size()-k+1;i++)
        {
                 int max=-1000;
                for(int j=i;j<i+k;j++)
                {
                    if(max<nums[j])
                    max=nums[j];
                }
                vec[cnt++]=max;
        }
        return vec;
    }
};
3.2Java代码
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        if(nums.length==0)
        return nums;   
        int arr[]=new int[nums.length-k+1];
        int cnt=0;
        for(int i=0;i<nums.length-k+1;i++)
        {
                 int max=-1000;
                for(int j=i;j<i+k;j++)
                {
                    if(max<nums[j])
                    max=nums[j];
                }
                arr[cnt++]=max;
        }
        return arr;
    }
}

你可能感兴趣的:(剑指Offer)