当前位置: 首页 > news >正文

904. 水果成篮

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
  • 三、解法
  • 四、收获
    • 4.1 心得
    • 4.2 举一反三

一、题目

在这里插入图片描述

二、思路

2.1 解题思路

2.2 代码尝试

#include <map>
class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        std::map<int, int> pla;
       
        
        int l=0,r=0;
        int cur=0;//统计当前收集的水果数目
        int ret=0;//统计采摘的最大数目
        //开始采集,先按当前的第一个采集,统计窗口内采集情况
        while(r<fruits.size()){
            //窗口内每次遍历一个值,就把他加入哈希表,并维护哈希表
            pla[fruits[r]]++;
            
            //如果哈希表的长度大于2,说明需要把l键删除
            if(pla.size()<=2){
                cur++;
                ret=max(cur,ret);
            }else{
                cur--;
                pla.erase(fruits[l]);
                l++;
                r++;
                ret=max(cur,ret);
            }
            
            //判断如果哈希表长度超出2或者篮子数目不够了

        }

        //如果当前窗口不满足,限制了右指针的发展,那就更新左指针,然后再在此基础上继续更新右指针滑动窗口 

        return ret;
    }
};

想用哈希表来维护滑动窗口中的数据

2.3 疑难问题

三、解法

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;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/fruit-into-baskets/solutions/1893352/shui-guo-cheng-lan-by-leetcode-solution-1uyu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获

4.1 心得

感觉思路已经很接近了,但是哈希表那边的写法有点忘记,另外逻辑思路也有点并不是很清晰。滑动窗口的里面那个收敛的判断条件应该是如何收敛左边边界,判断条件是不满足窗口

4.2 举一反三

分治去思考解题很有帮助

相关文章:

  • 前端实现rsa加密功能
  • 线程池的介绍
  • Linux-ftrace-双nop机制的实现
  • c# winform程序 vs2022 打包生成安装包
  • # 代码写作风格:优雅编程的艺术
  • 一文掌握 Scrapy 框架的详细使用,包括实战案例
  • 【SQL】掌握SQL查询技巧:数据分组与排序
  • 优艾智合机器人日本子公司成立,加速推进国际化布局
  • Redis大key
  • Zynq移植canopen协议站canfestival+控制电机运动
  • 使用AI后为什么思考会变得困难?
  • 2.4 自动化评测答疑机器人的表现-大模型ACP模拟题-真题
  • k8s拉取harbor镜像部署
  • 3 算法1-4 过河卒
  • CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。
  • word中把latex公式快速转换为word公式
  • 第二章 activiti “开发环境搭建训练营”
  • 通信原理速成笔记(信息论及编码)
  • 蓝桥 发现环
  • Leetcode-最大矩形(单调栈)
  • 网站优化定做/网络建设推广
  • 网站宣传推广的目的/齐三seo顾问
  • 凡科建站官网/网络营销的方法有哪些?
  • 安徽省淮南市城乡建设委员会网站/百度高级检索入口
  • 有经验的赣州网站建设/seo职业发展
  • 可以用vs做网站建设吗/苏州百度推广公司