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

   日期:2020-07-07     浏览:109    评论:0    
核心提示:1.问题描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:2.题目分析本题直接暴力就行我们需要知道结果容器里边的元素个数为nums.size()-k+13.代码实现3.1C++代码class Solution {public: vector maxSlidingWindow(vector&l

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;
    }
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服