思路:这道题的本质就是在一个数组中,找到这么一个子数组,使得这个子数组只有两个不同的数值,并且子数组的长度达到最大;用暴力的解法肯定会超时,这里沿用了KMP的字符串匹配方法;



语文能力有限,无法将整个过程很好地描述出来,自己动手按照代码跑一边即可,时间复杂度为O(n);

int totalFruit(vector<int> &tree)
{int len = tree.size();int l = 0, r = 0;int pre = tree[0];while (r < len){if (tree[r] != tree[l]){break;}else{r++;}}int now = tree[r];int start_next = r;int max = 0;while (r < len){if (tree[r] != now) {if (tree[r] == pre) //当前值与pre相等,为了保证start_next指向下一个子数组的左端点,需要交换pre和now的值,并更新start_next的值{pre = now;now = tree[r];start_next = r;}else //当前值与now和pre都不想等,此时需要判断是否需要更新max,并做好下一个子数组的初始工作;{if (r - l > max)max = r - l;l = start_next;pre = tree[start_next];start_next = r;now = tree[r];}}r++;}if (r - l > max){max = r - l;}return max;
}

Leetcode每日一题:904.fruit-into-baskets(水果成篮)相关推荐

  1. LeetCode每日一题——904. 水果成篮

    LeetCode每日一题系列 题目:904. 水果成篮 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整 ...

  2. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  3. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  4. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  5. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  6. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  7. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  8. leetcode每日一题·救生艇问题(Python)

    leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...

  9. LeetCode每日一题打卡组队监督!刷题群!

    近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...

  10. LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数

    LeetCode每日一题系列 题目:1758. 生成交替二进制字符串的最少操作数 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个仅由字符 '0' 和 '1' ...

最新文章

  1. 了解 C# “.NET研究”4 中的 Dynamic 关键字
  2. Windows Server 2003基础与技术指南(2)---Windows Server 2003的安装
  3. stm32 基本定时器TIM6、TIM7的使用
  4. roast和roasting区别_《吐槽大会》的英文居然是roast!为什么?
  5. 在Linux以及Mac OS X启用F#
  6. Javascript学习总结 - JS基础系列 二
  7. oracle 游标的替代,Oracle中replace函数和translate函数以及简单的游标
  8. String课后作业
  9. 南理工14级第4组软件课程设计报告
  10. iOS:const的使用
  11. Python根据歌曲id爬取网易云音乐歌词
  12. 加固机箱设计资料第289篇:基于3U VPX的 5槽加固机箱
  13. KnockoutJS 实例
  14. Python资源大全中文版(建议收藏)
  15. 我的注电之旅——基础考试篇
  16. VScode运行MATLAB
  17. 《CISCO交换机常用命令》——【思科交换机配置及维护技能】
  18. 世界金融发展史:从资产证券化到STO
  19. 霹雳猿教程网站正式上线
  20. 沟通创造价值,分享带来快乐

热门文章

  1. Django - 路由系统
  2. mysql查询当天数据(上周、本月、上个月、距离当前现在6个月的数据)
  3. get请求和post请求乱码问题
  4. 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件
  5. 【转】 Pro Android学习笔记(九一):了解Handler(5):组件生命
  6. Understanding ASP.NET Validation Techniques
  7. 项目开发中自定义字段设计原则
  8. 声明方法java实际开发中泛型使用需要注意的一些问题
  9. JavaScript——编码问题
  10. 推荐分享一个自定义绑定控件(附源码)