1、仔细读题,分析题意,两件事:最大值、数组分组
2、不管三七二十一,既然要最大值,那就先把最大值的函数写出来,根据题意,是将分组后的数组传递到最大值函数,返回最大值。(即使写不出来别的思路,至少完成了一部份,对吧,我想应该是加分的吧)
3、数组分组,我是根据数组下标来分组的,初始的分组,借鉴String函数中分字符串的思想,就是传递下标值,然后返回分组,那我这里没有重新再写一个函数。
下标值两个变化:
1、数组的起始下标top=0
2、数组的结束下标end = size
3、分组结束的标值,就是结束下标和数组的长度相等了,说明已经分到最后一组了
接下来看代码就懂了,一定要注意最后结束的条件,还有就是返回值,不能和自己返回一个null,我犯了这么个错误
import java.util.*;
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size){
ArrayList<Integer> list = new ArrayList<>();
if(size == 0 || num == null || size > num.length){
return list;
}
int top = 0;
int end = size;
while(end <= num.length){
int[] arr = new int[size];
int i = 0;
int t = top;
while(t < end){
arr[i] = num[t];
i++;
t++;
}
list.add(Max(arr));
top++;
end++;
}
return list;
}
public int Max(int[] arr){
int max = arr[0];
for(int i = 1; i< arr.length ;i++){
if(max < arr[i]){
max = arr[i];
}
}
return max;
}
}
京公网安备 11010502036488号