失败案例:模拟、暴力,倒数第二个例子t了,呜呜

class Solution {
public:int totalFruit(vector<int>& fruits) {int len=fruits.size();int num1=-1,num2=-1;int chang=0;int i;int ans=-1;for(i=0;i<len;i++){if(num1==-1&&num2==-1){num1=fruits[i];chang++;//cout<<"*1"<<endl;}else if(num1!=-1&&num2==-1&&fruits[i]!=num1){num2=fruits[i];chang++;//cout<<"*2"<<endl;}else if(num1!=-1&&num2==-1&&fruits[i]==num1){chang++;//cout<<"*2"<<endl;}else if(num1!=-1&&num2!=-1&&(num1==fruits[i]||num2==fruits[i])){chang++;//cout<<"*3"<<endl;}else if(num1!=-1&&num2!=-1&&(num1!=fruits[i]||num2!=fruits[i])){ans=max(ans,chang);num1=fruits[i-1];num2=fruits[i];int cnt=0;for(int j=i-1;j>=0;j--){if(fruits[j]==num1) cnt++;else break;}chang=cnt+1;//cout<<"*4"<<endl;}cout<<num1<<" "<<num2<<endl;cout<<chang<<endl;ans=max(ans,chang);}return ans;}
};

使用滑动窗口,主要俺没想起来用map,>_>

class Solution {
public:int totalFruit(vector<int>& fruits) {int n = fruits.size();unordered_map<int, int> cnt;int left = 0, ans = 0;for (int right = 0; right < n; ++right) {++cnt[fruits[right]];while (cnt.size() > 2) {auto it = cnt.find(fruits[left]);--it->second;if (it->second == 0) {cnt.erase(it);}++left;}ans = max(ans, right - left + 1);}return ans;}
};

力扣904(滑动窗口、哈希)相关推荐

  1. 力扣239. 滑动窗口最大值(自定义排序队列)

    239. 滑动窗口最大值 //实现功能:peek()取得队列的最大值,比最大值先添加进来的删除,后添加进来的保留 class Mydeque{Deque<Integer> deque;pu ...

  2. 力扣刷题记录--哈希表相关题目

    当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...

  3. LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)

    1. 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  4. LeetCode 567. 字符串的排列 (滑动窗口哈希表)

    567. 字符串的排列 题意: 第一个字符串的排列之一是第二个字符串的子串 即判断第二个字符串是否包含某个子串,这个子串的字符以及字符数量要求与第一个字符串相同 解法1 (暴力法) 按照第一个字符串的 ...

  5. LeetCode 76. 最小覆盖子串 (滑动窗口哈希表)

    LeetCode 76. 最小覆盖子串 思路: 准备一个map1记录字符串t(字符, 字符个数) 准备一个map2记录在s的窗口中所包含的t串字符(字符,字符个数) 左端点收缩条件:窗口内已经覆盖了t ...

  6. LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)

    3. 无重复字符的最长子串 题意: 找子串 子串中无重复字符 要求子串长度最长 解法1(暴力法) 思路: 建立一个长度不断变小的滑动窗口 用一个指针指针扫描窗口内的每个元素: 如果除去指针指向的那个元 ...

  7. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)

    159. 至多包含两个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {// 记录 ...

  8. 力扣题目——705. 设计哈希集合

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 不使用任何内建的哈希表库设计一个哈希集合(HashSet). 实现 MyHa ...

  9. 力扣904,水果成篮(JavaScript)

    通过map()保存数据,(key:当前值,value:下标)把相同的值存在一起 var totalFruit = function(fruits) {const map=new Map()let l= ...

最新文章

  1. 在PyPI上发布自己的python包
  2. 阿里云江岑:云原生在边缘形态下的升华
  3. 有BUG!!!慎用default文本
  4. SpringBoot系列十:SpringBoot整合Redis
  5. java中接口私有反方_接口中的Java 9私有方法
  6. ASP.NET的页面生存周期 [转]
  7. dell系统重装后无法进入系统_戴尔电脑重装系统后开机出现NO Boot Device Found进不了系统...
  8. Qt——原地奔跑的小人
  9. 洛谷P1005 [NOIP2007 提高组] 矩阵取数游戏
  10. android编程微博的发送,基于Android手机微博客户端的开发.doc
  11. RealSense 图形识别之路 2.0
  12. Cocoa动画编程指南
  13. 关于travis scott的网名_异地恋情侣网名甜蜜秀恩爱
  14. 报错PyTorch is not compiled with NCCL support
  15. 抖音修改so实现抓包功能
  16. arcgis像元大小和分辨率_ArcGIS教程:栅格数据基本词汇
  17. wps批量将文档括号内的字符串修改颜色
  18. HDU 5454 Excited Database【线段树】
  19. 百度云同步盘网络异常【1】解决办法
  20. 使用scrapy爬虫框架来获取腾讯的招聘信息

热门文章

  1. 诺基亚品牌手机不久将消失 Stephen Elop回应不是木马
  2. 如何解决HTML网页中文显示乱码
  3. 【Maven教程】-Maven基础篇(概念、思考、安装)
  4. 关于 redux-thunk 的作用,认识,理解
  5. java long 运算_Java Long类型,阶乘计算
  6. 2023年国内十大SaaS软件公司排名
  7. digitalpersona 开发(系统托盘,监听指纹扫描)
  8. MIC29302WU-TR高电流、高精度、低压差的稳压器
  9. Git教学资源,安装,关联账号,创建/关联/克隆库,版本回退,管理修改基本指令
  10. Tandem Repeats Finder:串联重复序列查找工具