i >= k - 1,也就是產生結果的時候開始,每次把myqueue隊列頭部的元素取出來,放在結果集合中
當輪到某一個元素的時候,說明他的舞臺,已經來了~ -1 -2 -3 -4 -5 -6 -7 這種情況元素被清除掉,是因為他們的距離大于 K
classSolution{publicint[]maxSlidingWindow(int[] nums,int k){PriorityQueueDeque<Integer> myqueue =newLinkedList<>();int[] result =newint[nums.length - k +1];int index =0;for(int i =0; i < nums.length; i++){// 如果 myqueue中含有很多的元素,那么就要將他彈出來,多余的彈出來// 如果當前的位置 和你超過 K個距離了,那么你就應該離開了while((!myqueue.isEmpty())&& i - myqueue.getFirst()>= k){myqueue.pollFirst();}// 如果隊列里面的比他小的,那么就應該刪除掉了while((!myqueue.isEmpty())&& nums[myqueue.getLast()]<= nums[i]){myqueue.pollLast();}myqueue.addLast(i);if(i >= k -1){result[index ++]= nums[myqueue.getFirst()];}}for(int g : result){System.out.println(g);}return result ;}}