首页 > 其他 > 详细

剑指 Offer 59 - I. 滑动窗口的最大值

时间:2021-04-12 18:11:15      阅读:15      评论:0      收藏:0      [点我收藏+]

题目:

给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。

示例:

输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
输出: [3,3,5,5,6,7] 
解释: 

  滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7

 

提示:

你可以假设 总是有效的,在输入数组不为空的情况下,1 ≤ k ≤ 输入数组的大小。

 

 

代码:

 1 class Solution {
 2     public int[] maxSlidingWindow(int[] nums, int k) {
 3         
 4         //数组为空
 5         if(nums.length==0){return new int[0];}
 6        
 7         //k大于数组长度
 8         if (nums.length <=k) {
 9             Arrays.sort(nums);
10             int[] res=new int[1];
11             res[0]=nums[nums.length-1];
12             return  res;
13         }
14         
15         //k小于数组长度
16         int max=0;
17         List<Integer> list=new ArrayList<>();
18         for (int i = k-1; i < nums.length; i++) {
19             max=Integer.MIN_VALUE;
20             for (int j = i; j >i-k ; j--) {
21                 max=max<nums[j]?nums[j] :max; 
22             }
23             list.add(max);
24         }
25         int[] res=new int[list.size()];
26         for(int i=0;i< res.length;i++){
27             res[i]=list.get(i);
28         }
29         return  res;
30                 
31     }
32 }

 

技术分享图片

 

剑指 Offer 59 - I. 滑动窗口的最大值

原文:https://www.cnblogs.com/SEU-ZCY/p/14648220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!