首页 > 其他分享 >滑动窗口 leetcode 76

滑动窗口 leetcode 76

时间:2024-02-16 16:44:26浏览次数:37  
标签:right string 复杂度 76 smap 滑动 size leetcode left

Problem: 76. 最小覆盖子串

目录

思路

第一次遇到不看题解我是写不出来,主要是ans是不断变化的

解题方法

用两个指针,left缩小区间,right扩大区间,直到产生冗余元素开始,缩减left,直到不能再缩减为止,取满足的最小字串就好了

复杂度

时间复杂度:

\(O(n)\)

空间复杂度:

\(O(n_1)\)

Code

class Solution {
public:
    string minWindow(string s, string t) {
      string ans=s+t;
      int n1=s.size(),n2=t.size(),left=0,count=0;
      map<char,int> tmap;
      map<char,int> smap;
      for (size_t i = 0; i <n2; i++)
      {
        tmap[t[i]]++;
      }
      for (int right = 0; right < n1; right++)
      {
        smap[s[right]]++;
        if(tmap[s[right]]>=smap[s[right]]) count++;
        while (left<right&&smap[s[left]]>tmap[s[left]])
        {
          smap[s[left]]--;
          left++;
        }
        if(count==n2){
          if(right-left+1<ans.size())
          ans=s.substr(left,right-left+1);
        } 
      }
      return ans==s+t?"":ans;
    }
};

标签:right,string,复杂度,76,smap,滑动,size,leetcode,left
From: https://www.cnblogs.com/oxidationreaction/p/18017273

相关文章

  • leetcode--11. 盛最多水的容器(双指针)
    记录19:462024-2-15https://leetcode.cn/problems/container-with-most-water/利用双指针来解,一个在头,一个在尾,每次最小的那个进行移动,然后计算出容积。ps:刚开始想到了用单调栈来解决,但这道题和单调栈那个例题还不一样。然后暴力解当然超时了,然后学习到了双指针(..双指针应......
  • Leetcode 1-5题
    两数之和给定一个整数数组和一个目标值,在数组中找出和为目标值的两个整数,并返回其数组下标。题目确保必存在一个答案,且数组中无重复元素。数组长度为\([2,10^4]\)可以采用哈希表来存储每个值以及其出现的下标,那么对于nums[i]只需要查询在数组中是否出现过target-nums[i]即可......
  • leetcode 49 字母异位词分组
      需要好好研究各种写法。C++解法classSolution{public:vector<vector<string>>groupAnagrams(vector<string>&strs){vector<vector<string>>result;if(strs.size()==0)returnresult;unordered_map<......
  • poj 2676 Sudoku(DFS+回溯+剪枝)
    2676--Sudoku(poj.org)#include<iostream>#include<cstring>usingnamespacestd;intt,row[10][10],col[10][10],grid[10][10],map[10][10];boolDFS(intr,intc){if(r==10)returntrue;boolflag=false;if(map[r][c]){if(c=......
  • leetcode 17 电话号码的字母组合
     解题关键点:用递归方法classSolution{public:vector<string>mapping={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};voidcom......
  • leetcode 438 找到字符串中所有字母异位词
     这个题目的有些类似实现strStr这个算法题目。解题关键点:1.采用类似滑动窗口的算法遍历字符串s。2.用两个哈希表保存字符串s和字符串p,中每个小写字母出现的次数。C++代码:classSolution{public:boolequals(vector<int>&sc,vector<int>&pc){for......
  • LOJ #2876. 「JOISC 2014 Day2」水壶 题解
    DescriptionJOI君所居住的IOI市以一年四季都十分炎热著称。IOI市被分成\(H\)行,每行包含\(W\)块区域。每个区域都是建筑物、原野、墙壁之一。IOI市有\(P\)个区域是建筑物,坐标分别为\((A_1,B_1),\)\((A_2,B_2),\)\(\ldots,\)\((A_P,B_P)\)。JOI君只能进入建......
  • P2676 [USACO07DEC] Bookshelf B
    1.题目介绍[USACO07DEC]BookshelfB题目描述FarmerJohn最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。所有\(N(1\leN\le20,000)\)头奶牛都有一个确定的身高\(H_i(1\leH_i......
  • leetcode——数组算法——前缀和构建和应用
    leetcode——数组算法——前缀和构建和应用前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和303.区域和检索-数组不可变比如leetcode303.区域和(检索-数组不可变)题目介绍:给定一个整数数组nums,处理以下类型的多个查询:计算索引left和right(包含left......
  • [LeetCode] 2108. Find First Palindromic String in the Array
    Givenanarrayofstringswords,returnthefirstpalindromicstringinthearray.Ifthereisnosuchstring,returnanemptystring"".Astringispalindromicifitreadsthesameforwardandbackward.Example1:Input:words=["abc&quo......