package com;
public class SlidingWindow {
public static void main(String[] args) {
int[] array = { 1, 5, 2, 6, 3, 1, 24, 7 };
int slide = 3;//say
List<Integer> result = new ArrayList<Integer>();
for (int i = 0; i < array.length - (slide-1); i++) {
result.add(getMax(array, i, slide));
}
System.out.println("MaxList->>>>" + result.toString());
}
private static Integer getMax(int[] array, int i, int slide) {
List<Integer> intermediate = new ArrayList<Integer>();
System.out.println("Initial::" + intermediate.size());
while (intermediate.size() < slide) {
intermediate.add(array[i]);
i++;
}
Collections.sort(intermediate);
return intermediate.get(slide - 1);
}
}
Вы можете создать таблицу дат даты, а затем подсчитать все даты. т.е.:
with dates ("date") as
(
select '2017-07-13'::date + i
from generate_series(0, '2018-07-13'::date - '2017-07-13'::date) v(i)
)
select "date", count(myTable.id)
from dates
left join myTable on dates."date" = myTable.createdDate
group by dates."date";
Примечание: возможно, это тоже:
with dates as
(
select "date"
from generate_series('2017-07-13'::date-1, '2018-07-13'::date,'1 day') v("date")
)
...