public List<Integer> getMaxFromLimit(Integer[] nums, int k) {
List<Integer> list = Arrays.asList(nums);
Map<String, Integer> subMaxDetail;
List<Integer> result = new ArrayList<>();
List<Integer> subList = list.subList(0, k);
//初始化最大值详情
subMaxDetail = this.getMaxSubList(subList, 0,k);
result.add(subMaxDetail.get("value"));
for (int i = 1; i <= list.size() - k; i++) {
subList = list.subList(i, i + k);
if (subMaxDetail.get("index") < i) {
subMaxDetail = this.getMaxSubList(subList, i,k);
} else if (subMaxDetail.get("value") < subList.get(subList.size() - 1)) {
subMaxDetail.put("index", i);
subMaxDetail.put("value", subList.get(subList.size() - 1));
}
result.add(subMaxDetail.get("value"));
}
return result;
}
//获得字串最大值
private Map<String, Integer> getMaxSubList(List<Integer> subList, int startIndex,int k) {
int max = Integer.MIN_VALUE;
Map<String, Integer> subMaxDetail = new HashMap<>();
max = subList.stream().max(Comparator.naturalOrder()).orElse(max);
subMaxDetail.put("index", subList.indexOf(max)+startIndex);
subMaxDetail.put("value", max);
return subMaxDetail;
}
09-21
4399
04-10
1009