劍指offer之滑動窗口的最大值(C++/Java雙重實現)

1.問題描述

給定一個數組 nums 和滑動窗口的大小 k,請找出所有滑動窗口裏的最大值。
示例:
輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
輸出: [3,3,5,5,6,7]
解釋:
在這裏插入圖片描述
在這裏插入圖片描述

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章