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; } }