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

数组总和 (leetcode 40

leetcode系列

文章目录

  • 一、核心操作
  • 二、外层配合操作
  • 三、核心模式代码
  • 总结


去重方式和之前三数之和一样,也可以用used数组去重,但本次尝试使用set去重

一、核心操作

  1. 如果count为0了,则证明正好减到了0,就可以收获,并返回
  2. 建立unordered_set
  3. 开始循环,如果在set中能够搜寻到当前的数字,说明已经重复了,则直接进行下一次的循环,如果没有找到,则说明这是一个没有重复的新数字,将其加入set中,后面则直接进行常规操作

提示:小白个人理解,如有错误敬请谅解!

二、外层配合操作

  1. 对数组进行排序

三、核心模式代码

代码如下:

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    void backTracking(vector<int>& candi, int count, int startIndex)
    {
        if(count==0)
        {
            res.push_back(path);
            return;
        }
        unordered_set<int> uset;
        for(int i=startIndex;i<candi.size()&&(count-candi[i])>=0;i++)
        {
            if(uset.find(candi[i])!=uset.end())continue;
            uset.insert(candi[i]);
            path.push_back(candi[i]);
            backTracking(candi,count-candi[i],i+1);
            path.pop_back();
        }
    }
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
        if(!candidates.size())return res;
        sort(candidates.begin(),candidates.end());
        backTracking(candidates,target,0);
        return res;
    }
};

总结

  1. 用哈希表的时间复杂度比较高,所以更常用的还是used数组或者直接用startIndex进行去重,最后在for循环条件判断的时候,一定要进行提前预判,只有count减去当前值大于等于0才继续进行循环,不进行提前预判剪枝的话会超时
http://www.dtcms.com/a/64471.html

相关文章:

  • MySql索引下推(ICP)是什么?有什么用?
  • logback希望特定的error日志写入到特定文件
  • Qt/C++音视频开发82-系统音量值获取和设置/音量大小/静音
  • leetcode_字符串 49. 字母异位词分组
  • DeepSeek赋能智慧环保:为环境资源保护提供决策支持,开启绿色智能新时代
  • MAVEN解决版本依赖冲突
  • Mybatis 注解(详细版)
  • UE小:UE5.5 PixelStreamingInfrastructure 使用时注意事项
  • 15 | 定义简洁架构 Store 层的数据类型
  • Skyvern AI 实现 浏览器爬虫+自动化工具
  • coze ai assistant Task 2
  • Flash Attention 算法简介
  • Math.NET Numerics 库怎么装
  • 【Linux内核系列】:文件系统
  • 治愈系自媒体运营方案
  • Linux 字符设备驱动实例
  • 第二章:Qt常用界面组件
  • Java程序开发之Spring Boot快速入门:5分钟搭建RESTful API
  • angular中下载接口返回文件
  • Qt的QMenu 和 QAction的样式设置
  • 骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚
  • 计算机毕业设计:ktv点歌系统
  • 使用arm嵌入式编译器+makefile编译管理keil项目
  • openai agents SDK原理详解
  • golang从入门到做牛马:第十六篇-Go语言`range`:循环遍历的“瑞士军刀”
  • PID控制器的整定的方法
  • Java中的加盐加密:提升密码存储安全性的关键实践
  • docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境
  • 【Pandas】pandas Series shift
  • 操作系统知识点28