zoukankan      html  css  js  c++  java
  • 滑动窗口的最大值

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12837866.html

    滑动窗口的最大值(49min)

    题目链接:https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/

    给定一个数组 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

    题解:

               题意:给你一个数组,在数组中框k个数,求这k个数中的最大值,然后框向下移动一个位置,继续框k个数,在求最大值,直到数组最后,求每次框中的最大值。

               思路:

                         1.定义一个双重循环,第一层遍历数组,第二层遍历每次框中的k个数。

                         2.定义一个数组存储结果,定义一个变量来存放每次框中所求的最大值。

              注意:

                        1.每次遍历完框中的k个数,需要把存储最大值的变量变为最小值,然后比较。

                        2.在遍历数组时,一共遍历了数组长度减去k加一个数。

                        3.注意测试用例中有数组为空的情况。

    代码如下:

    class Solution {
        public int[] maxSlidingWindow(int[] nums, int k) {
           if(nums.length==0||nums.length==1)
               return nums;
           int [] result=new int[nums.length-k+1];
           double max = Double.NEGATIVE_INFINITY;
           int n=0;
           for(int i=0;i<nums.length-k+1;i++)
           {
              for(int j=i;j<i+k;j++)
              {
                  if(max<nums[j])
                  {
                      max=nums[j];
                  }
              }
              result[n++]=(int)max;
              max = Double.NEGATIVE_INFINITY;
           }
           return result;   
        }
    }
  • 相关阅读:
    控制器的设计与实现(五)
    综述(一)
    需求分析与数据库设计(二)
    对MVC架构简单概述设计(三)
    排球计分规则——记分员
    Java程序员必看书籍
    java面试必背知识点
    深入浅出UML
    从svn检出的项目缺少.project和.classpath文件解决办法
    打印函数 lodop
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12837866.html
Copyright © 2011-2022 走看看