在做题中学习(46):水果成篮

904. 水果成篮 - 力扣(LeetCode)

读题和示例:可转化为求一个最长的子数组,它的数字(水果)种类要  <=2.

解法:同向双指针————>滑动窗口

思路:因为要记录数字(水果)种类,因此需要一个哈希表来做一个下标的映射————>用来存放数字(水果)是何种种类,还需要一个变量记录已有的种类个数。

滑动窗口步骤:

1.left = 0,right = 0.

2.进窗口————>kind[fruits[right]]++

3.判断————>kinsum是否符合要求

4.出窗口+重复判断————>kind[fruits[left]]--

5.更新结果————> 取一个更大的len

class Solution 
{
public:
    int totalFruit(vector<int>& fruits) 
    {
        int kind[100000] = {0};
        int len = 0,kindsum = 0;
        for(int left = 0,right = 0;right<fruits.size();)
        {
            //先判断是因为哈希表中此位置为0时,代表没有这个种类
            //因此种类需要++
            if(kind[fruits[right]]==0)
            {
                kindsum++;
            }
            //1.进窗口
            kind[fruits[right]]++; 
            //2.判断
            while(kindsum > 2)
            {
                //3.出窗口
                kind[fruits[left]]--;
                //一个数出去后,那个位置重新变为0时,代表这个种类没有了
                //因此这个需要--
                if(kind[fruits[left]]==0)
                {
                    kindsum--;
                }
                left++;
            }
            //4.更新结果
            len = max(len,right - left + 1);
            right++;
        }
        return len;
    }
};

相关推荐

  1. LeetCode904:水果

    2024-01-16 17:10:12       16 阅读
  2. 力扣904.水果

    2024-01-16 17:10:12       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 17:10:12       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 17:10:12       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 17:10:12       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 17:10:12       18 阅读

热门阅读

  1. 如何为 glog 的宏重载 <<

    2024-01-16 17:10:12       37 阅读
  2. LeetCode刷题——394. 字符串解码(HOT100)

    2024-01-16 17:10:12       40 阅读
  3. 3588开发板配置rtc方法

    2024-01-16 17:10:12       31 阅读
  4. 2022年面经记录(base杭州)

    2024-01-16 17:10:12       32 阅读
  5. windows下本地启动rocketmq

    2024-01-16 17:10:12       35 阅读
  6. Day 48 动态规划 9

    2024-01-16 17:10:12       34 阅读
  7. WebGIS开发者入门

    2024-01-16 17:10:12       26 阅读