力扣打卡day06——滑动窗口最大值、最小覆盖子串

力扣打卡day06——滑动窗口最大值、最小覆盖子串 239. 滑动窗口最大值 - 力扣LeetCode思路自己定义构造单调队列队列中的首部就是每个窗口的最大元素每次弹出元素的时候判断要弹出元素是不是队列里面的最大值就是队列的首部,加入队列比加入元素小的全部都弹出。代码主要就是用res 记录每个窗口的最大值在计算第一个窗口的最大值最后进行循环即可。class Mydeque{ //自己定义构造单调队列 DequeInteger dequenew LinkedList(); //弹出队列判断要弹出元素是不是队列里面的最大值 void poll(int val){ if(!deque.isEmpty()valdeque.peek()){ deque.poll(); } } //加入队列比元素小的全部都弹出 void add(int val){ while(!deque.isEmpty()valdeque.getLast()){ deque.removeLast(); } deque.add(val); } //队列的顶部就是最大元素 int peek(){ return deque.peek(); } } class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int nnums.length; int lenn-k1; int []resnew int[len];//每个窗口的最大值 int rar0; //记录下标 Mydeque mydequenew Mydeque(); //前三个元素加入 for(int i0;ik;i){ mydeque.add(nums[i]); } res[rar]mydeque.peek();//第一个窗口最大值 for(int ik;in;i){ //滑动窗口移除最前面的元素 mydeque.poll(nums[i-k]); //滑动窗口加入最后面的元素 mydeque.add(nums[i]); //记录对应的最大值 res[rar]mydeque.peek(); } return res; } } 作者﹋少年つ 链接https://leetcode.cn/problems/sliding-window-maximum/solutions/3800920/jin-ri-da-qia-jia-you-by-2174854139-bs3g/ 来源力扣LeetCode 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。76. 最小覆盖子串 - 力扣LeetCodeclass Solution { public String minWindow(String s, String t) { //特殊情况进行判断 if (snull||s.isEmpty()||t.isEmpty()||tnull){ return ; } //记录t的大小和次数 MapCharacter,Integer neednew HashMap(); //记录窗口的大小和次数 MapCharacter,Integer windownew HashMap(); int left0,right0; //左右指针 int strnumber0; //匹配的个数 int minlenInteger.MAX_VALUE; //最小长度 int start0; //最短起始指针 //进行t的初始化 for(char c:t.toCharArray()) { need.put(c,need.getOrDefault(c,0)1); } while(rights.length()){ char rs.charAt(right); right; //更新窗口内字符的计数 if(need.containsKey(r)){ window.put(r, window.getOrDefault(r,0)1); if (need.get(r).equals(window.get(r))) { strnumber; } } //当窗口内的字符已经完全包含了 t 中的所有字符时 while (strnumberneed.size()){ // 更新最小窗口的起始位置和长度 if (right-leftminlen){ startleft; minlenright-left; } // 缩小窗口移动左边界 char ls.charAt(left); if (window.containsKey(l)){ window.put(l,window.get(l)-1); if (window.get(l)need.get(l)) { strnumber--; } } left; } } return minlenInteger.MAX_VALUE? : s.substring(start,startminlen); } }