力扣面试题17.18.最短超串

力扣面试题17.18.最短超串

  • 类似76.

  • 用哈希表处理短数组 然后遍历长数组

    • 找到相同元素 count-- --
    • 当count==0时进入循环 ------ 尽可能缩小区间
cpp 复制代码
  class Solution {
  public:
      vector<int> shortestSeq(vector<int>& big, vector<int>& small) {
          int n=big.size(),m=small.size();
          int st=-1,ed=n;
          unordered_map<int,int> cnt;
          int count=0;  //记录small中元素个数
          for(auto c:small)
          {
              if(!cnt.count(c)) count++;
              cnt[c] ++;
          }
          for(int i=0,j=0;i<n;i++)
          {
              cnt[big[i]] --;
              if(cnt[big[i]] == 0) count--;
              while(!count)
              {
                  cnt[big[j]] ++;
                  //说明当前左端点为small中元素 并且big的区间内已不包含
                  if(cnt[big[j]] >0)
                  {
                      count++;
                      if(ed - st > i - j) st = j,ed = i;
                  }
                  j ++;
              }
          }
          if(st == -1) return {};
          else return {st,ed};
      }
  };
相关推荐
YGGP8 分钟前
【Golang】LeetCode 287. 寻找重复数
开发语言·leetcode·golang
前端小白在前进8 分钟前
力扣刷题:千位分割数
javascript·算法·leetcode
free-elcmacom9 分钟前
机器学习高阶教程<11>当数据开始“折叠”:流形学习与深度神经网络如何发现世界的隐藏维度
人工智能·python·神经网络·学习·算法·机器学习·dnn
小年糕是糕手13 分钟前
【C/C++刷题集】string类(一)
开发语言·数据结构·c++·算法·leetcode
努力学算法的蒟蒻19 分钟前
day40(12.21)——leetcode面试经典150
算法·leetcode·面试
ToddyBear21 分钟前
从字符游戏到 CPU 指令集:一道算法题背后的深度思维跃迁
数据结构·算法
光影少年23 分钟前
前端算法新手如何刷算法?
前端·算法
yuniko-n32 分钟前
【力扣 SQL 50】子查询篇
数据库·sql·leetcode
Andyshengwx34 分钟前
图论 最小生成树 MST问题
c++·算法·图论
賬號封禁中miu35 分钟前
图论之最小生成树
java·数据结构·算法·图论