依据题意,假设有一个窗口,这个窗口中包含 k 个元素,在从左往右逐一遍历这组数据的同时,你需要分别求出这个窗口中 k 个元素中的最大值。
解题思路:
根据题目要求,我们可以设定一个可存 k 个元素的数组 slide ,用来存储窗口元素,通过每一次求出每个窗口中元素的最大值,且每一次改变窗口中元素的各个值,即可达到这个目的。
代码:
publicint[]maxSlidingWindow(int[] nums,int k){int[] slide =newint[k];int length = nums.length-(k-1);int[] res =newint[length];if(nums.length ==0){returnnewint[k];}for(int i =0; i < k; i++){
slide[i]= nums[i];}int flag =0;for(int i =0; i < res.length; i++){int num =searchMax(nums,flag,k);
res[i]= num;
flag++;}return res;}privateintsearchMax(int[] nums,int flag,int k){int max = nums[flag];for(int i = flag; i < flag+k; i++){if(max < nums[i]){
max = nums[i];}}return max;}