代码随想录算法训练营第七天|哈希表理论基础,454.四数相加II ,383. 赎金信 ,15. 三数之和 ,18. 四数之和

OpenCV 算法梳理分析 本文系统梳理了OpenCV的核心算法体系,从模块架构到具体函数实现。OpenCV采用分层设计,包含基础I/O、图像处理、特征检测、视频分析和智能算法五大层次,所有模块基于统一的Mat数据结构。重点分析了imgproc模块的8类图像处理算法(滤波、形态学、阈值化等),features2d模块的特征检测与匹配流程(SIFT/ORB等算法对比),以及objdetect、video、calib3d等模块的核心功能。针对不同场景提供了算法选型建议,如高斯噪声推荐GaussianBlur,特征匹配推荐ORB+Flann 阅读详情

刷题建议

刷题建议与debug

  1. 代码随想录目前基本都有了视频讲解,一定要先看视频,事半功倍。
  2. 写博客,将自己的感悟沉淀下来,不然会忘
  3. 大家提问的时候,记得要把问题描述清楚,自己在哪一步遇到了问题,做了哪些调试,而不要只是把代码甩出来,这样方便大家帮忙快速定位问题。

博客内容:(博客记录以及打卡格式

今日学习文章链接和视频链接

Python菜鸟教程

哈希表理论基础

大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。

  1. hash表(散列表)一般哈希表都是用来快速判断一个元素是否出现集合里
  2. hash函数:通过hashCode把名字转化为数值
  3. hash碰撞:小李和小王都映射到了索引下标 1 的位置,这一现象叫做哈希碰撞,解决方法有线性探测法和拉链法
  4. hash结构:比如字典,集合等()了解原理
  5. 用法:空间换时间,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。
  6. Hashmap有Key和Value,Key是显性的,意思是if num not in hashmap,这里其实是看num是否是hashmap的key,注意key对应的value哪怕为0,key也存在
    在这里插入图片描述

454.四数相加II

自己看到题目的第一想法

  1. 暴力破解==》明显不行,应该会超时

看完代码随想录之后的想法

  1. n的四次方是不能接受的,那么可以将a+b的值作为一个整体,遍历后存入map,map的key是value,map的值是出现的次数,这相当于巧妙利用Hash
  2. 然后遍历C和D,如果0-(c+d)在map中出现过的话,那么它出现的次数为x,count += x
  3. return count

自己实现过程中遇到哪些困难

  1. 字典默认为空,不是0,所以要单独判断,如果n1 + n2不在hashmap里面,hashmap[n1+n2] = 1

相关题目

383. 赎金信

自己看到题目的第一想法

  1. hashmap,key是字符,value是出现的次数

看完代码随想录之后的想法

  1. 思路正确,但是字典操作错误
  2. 可以用数组,因为都是小写字母
  3. 注意先遍历谁,想清楚

15. 三数之和

自己看到题目的第一想法

  1. 应该是要用Hash,遍历a和b,放在hashmap里面,最后c=-a-b
  2. hashmap[-a-b]是否存在,但是需要去重,abc都需要去重
  3. 无思路

看完代码随想录之后的想法

  1. 先排序,从小到大排序
  2. 关键逻辑在于去重,i,j,k,i的去重复自己画图举例子理解
  3. 双指针思路->遍历i,left=i+1,right=size-1,后left和right相向移动,left不能等于right(题目要求,i,left和right不相等)
  4. 在拿到一个三元组后要对right和left进行去重
  5. i去重,遍历第一个-1的时候已经把-1的所有和为0的结果都查找到了,后续再遇到-1,就是查找之前的子集,所以直接跳过请添加图片描述

自己实现过程中遇到哪些困难

  1. 不明确在找到第一个三元组后,代码上怎么对left和right进行去重

今日收获,记录一下自己的学习时长

  1. 遇到问题:看下描述除了暴力,能否用Hash和双指针解决?Hash的话选择数组,set还是dict?
  2. 如果先排序的话是否能够更加容易解决问题
  3. 注意循环结束条件,边界条件,如何去重
  4. 注意这里能用双指针法因为需要的是value,需要排序,但是拍完序后索引就乱了,所以如果需要索引的,不能用这种思路
  5. 需要去重考虑双指针,不需要去重考虑Hash

18. 四数之和

自己看到题目的第一想法

看完代码随想录之后的想法

自己实现过程中遇到哪些困难

今日收获,记录一下自己的学习时长

国内9大Coding Plan平台实测:CI/CD延迟与开发者体验横评 代码托管平台不仅是Git仓库,更是现代研发流程的‘生产力基建’核心。其底层能力涵盖Git协议优化、CI/CD调度实时性、制品库并发吞吐及RBAC权限收敛效率等关键维度。尤其在团队规模扩张、日均提交激增、多环境高频部署场景下,Webhook延迟、CI排队耗时、制品上传卡顿等应用层性能指标,远比网络层ping值更能决定开发效能。本文基于真实微服务项目(32模块、8.7万行/仓)与三类极端负载(长尾构建、热区冲突、制品洪峰),对国内9个满足Coding Plan标准的平台开展端到端压测,聚焦CI/CD延迟与开发者 阅读详情

相关推荐

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 419

代码随想录算法训练营第七天 | 哈希表理论基础 454.四数相加II 383. 赎金 15. 三数之和 18. 四数之和

这道题我个人直观感觉是的拓展,但搞得我不知道该构建哈希表来find什么(比如说我遍历到数组1的元素a,我不知道在下一个数组构成的hash表来find什么元素)。然后就去看参考视频了。卡哥的视频解答了我的疑惑我们可以让前两个数组相加划为一块,后两个元素相加划为一块。但也有可能会产生另一个问题。因为当我们构建一块的过程中是要遍历相加的,这种方法的时间复杂度是O(),而两两划分的时间复杂度是O(进而衍生到如果出现“六数相加”、“八数相加”的题目,为了算法时间复杂度,在选用哈希数据结构的时候,也会陷入纠结。

C_J314的博客 755

北斗导航 | 从零开始学习基于奇偶矢量的接收机自主完好性监测(RAIM)算法及改进

接收机自主完好性监测(Receiver Autonomous Integrity Monitoring, RAIM)是GNSS接收机内部的一种算法,它仅利用冗余的伪距观测量来判断定位结果是否可靠、是否存在故障卫星,并能识别和排除故障卫星。奇偶矢量法是RAIM最经典的实现方式之一,它将不可直接观测的测量误差映射到一个“奇偶空间”中,使故障检测变得简单且服从精确的概率分布。w\mathbf{w}w虽然能反映故障,但它的协方差矩阵不是单位阵,各分量相关,不利于统计检验。奇偶矢量通过一个正交变换P。

尘世冰封的专栏 365

代码随想录算法训练营第七天| 哈希表理论基础454.四数相加II383. 赎金15. 三数之和18. 四数之和

代码随想录算法训练营第七天| 哈希表理论基础454.四数相加II383. 赎金15. 三数之和18. 四数之和

sliencect的博客 336

代码随想录算法训练营第七天| 哈希表理论基础 454.四数相加II 383.赎金 15.三数之和 18.四数之和

给定四个包含整数的数组ABCD,计算有多少个元组使得。

Sweeping_Robot的博客 451

代码随想录算法训练营第七天 | 哈希表理论基础454.四数相加II 383. 赎金 15. 三数之和 18. 四数之和

我分别用了两个哈希表,统计了两个数之和的出现次数;c数组元素+d数组元素 = -3,出现了4次;= 0而是 > 0,特例为第一个数组"abcd", 第二个数组"abcdabcd",这样判断完哈希表的值为负数,一开始疏忽了这点。但是要处理的条件很多,一不留神就会忽略。我看了思路然后做题,也没能考虑齐全条件,错误见注释。3. 双指针法能处理的也只有两个数字,数字变多后还是得放入循环中解决。2. 这儿要返回具体的数,但是哈希表只能反映次数和总和,所以不能用。除了双指针法想不到别的方法了,看了答案也只有这个办法。

Supriselearning的博客 304

代码随想录算法训练营第七天 |哈希表454.四数相加II383. 赎金15. 三数之和18. 四数之和

一般来说哈希表都是用来快速判断一个元素是否出现集合里。

qq_43714515的博客 2042

代码随想录算法训练营第七天 | 454.四数相加II383. 赎金15. 三数之和18. 四数之和

数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判断y是否存在而且还要记录y的下标位置,因为要返回x 和 y的下标。所以set 也不能用。这时候就可以用到字典了。

懒羊羊在努力的博客 2308

代码随想录算法训练营第七天|454四数相加II383赎金15三数之和18四数之和

我们设想一下,我们当前的三数之和为 -3 < 0 那么我们如果移动橙色指针的话则会让我们的三数之和变的更小,因为我们的数组是有序的,所以我们移动橙色指针(蓝色不动)时和会变小,如果移动蓝色指针(橙色不动)的话,三数之和则会变大,所以这种情况则需要向右移动我们的蓝色指针,找到三数之和等于 0 的情况进行保存,如果三数之和大于 0 的话,则需要移动橙色指针,途中有三数之和为 0 的情况则保存。但是这里我们需要注意的一个细节就是,我们需要去除相同三元组的情况,我们看下面的例子。下面我们来看下三个指针的初始位置。

qq_43405634的博客 2021

代码随想录算法训练营第七天 | 454.四数相加II383. 赎金15. 三数之和18. 四数之和

代码随想录算法训练营第七天 | 454.四数相加II383. 赎金15. 三数之和18. 四数之和

qq_52421969的博客 1512

代码随想录算法训练营第七天|LeetCode 454.四数相加||383. 赎金15. 三数之和18. 四数之和

状态:联想昨天的两数之和,不知道四个数的话怎么判断target-num,不会做这道题也要用map假设四个数组分别是ABCD前两个数组取出元素a+b 并统计出现的次数放到map里,遍历后两个数组c+d,查询0-(a+b)是否出现在map,出现的话即找到符合相加=0的四数元组。这样就解决了状态里我不会的那个点。至于为什么不是先遍历a,再遍历b+c+d,因为两个N^2的时间复杂度优于N+N^3。

Anastasia_sakura的博客 1830

数据库连接算法详解:从基础概念到嵌套循环优化

2.重复键在归并连接中的处理:排序归并连接遇到相同键时,需要保存或回溯同一键对应的记录组,然后输出笛卡尔积。(2)外连接:即使一方没有数据,也保留该侧数据,用NULL填充。对S中的键计算哈希值;(3)连接基数:连接结果的行数可能远大于任意一张输入表。设外表有R个页面,内表S个页面,比较次数O(R+R*S)5.哈希连接的限制:最适用于等值连接,不直接适用于比较。(1)build阶段:对较小的关系R建立哈希表。(1)内连接:只保留两张表之中能够匹配的内容。若R有M行,S有N行,则比较次数为O(MN)

jiangxiaohanya的博客 238

小红书 算法一面 十一

例如 **Soft MoE** 采用这种方式,大幅提升负载均衡性,但会增加计算开销。- **熵正则化**:直接最大化门控概率分布的熵,熵越大表示分布越均匀,公式为 $\mathcal{L}_{ent} = -\frac{1}{N}\sum_{i=1}^N\sum_{k=1}^K p_{ik}\log p_{ik}$。- **核心原理**:源自 **GShard** 和 **Switch Transformer**,通过最小化专家选择概率分布的熵,迫使门控网络给每个专家分配相近的 token 数量。

XLYcmy的博客 438

LeetCode 1. 两数之和 | 从暴力枚举到哈希表最优解 + 空间换时间思想全复盘

文章摘要 题目要求在数组中找到两数之和等于目标值的下标。核心思路是优化查找效率: 暴力法:双重循环枚举所有数对,时间复杂度O(n²),效率低但易实现。 哈希表优化:利用哈希表O(1)查找特性,遍历时存储已访问元素,每次计算差值并查询,时间复杂度降至O(n)。关键细节是先查后存,避免自匹配。 代码实现:哈希表法通过一次遍历完成,空间换时间,边界处理需注意空数组和不足两元素的情况。 常见错误:内层循环起始点、哈希表键值设计、立即返回结果等易错点需警惕。 面试要点:优先选择哈希表解法,解释与暴力法的差异,强调时间

yc2284238579的博客 259

算法日常・每日刷题--<BFS>4

题目摘要: 给定一个由'X'和'O'组成的矩阵,要求捕获所有被'X'完全包围的'O'区域(即不与边界连通的区域),并将其替换为'X'。解法核心是逆向处理: 标记边界连通区域:遍历矩阵四边,对边界上的'O'进行BFS/DFS,标记所有与之连通的'O'为临时符号(如'.'),表示这些区域未被包围。 批量修改:遍历整个矩阵,将未被标记的'O'(被包围的)改为'X',同时恢复标记的'.'为'O'。 示例: 输入: [['X','X','X','X'], ['X','O','O','X'], ['X','X','O'

2503_92261635的博客 258

10.LeetCode算法习题讲解--滑动窗口--最大连续为一的个数

利用滑动窗口解决最大连续1的个数

Jammy_1的博客 221

AI辅助芯片制造:算法与工程化落地

《国产DRAM龙头长鑫科技上市创纪录,AI技术重塑芯片制造新范式》 国产DRAM龙头企业长鑫科技7月27日登陆科创板,创下3.31万亿元市值,成为A股"一哥"。作为大陆唯一实现DRAM大规模量产的IDM企业,长鑫科技标志着国产存储产业的重要突破。随着AI算力需求激增,DRAM市场迎来高速发展期。AI技术正在深度改变芯片制造模式,在工艺仿真、缺陷检测、设备维护等环节发挥关键作用,显著提升良率和效率。长鑫科技高管推荐的新书《AI辅助芯片制造:算法与工程化落地》系统解析了AI赋能半导体制造的实战方案

weixin_43178406的博客 1万+

二刷hot100-70.爬楼梯

dp数组初始化:dp[n+1];

2302_78497251的博客 50

S 曲线加减速算法完整详解(C# 原生实现,无第三方库)

S 曲线加减速是工业运动控制核心轨迹规划算法,相比梯形曲线,依靠约束加加速度 Jerk 实现加速度连续变化,有效消除机械冲击与振动。本文完整讲解七段式 S 曲线原理、阶段推演、时间预规划逻辑,剖析短行程自动裁剪等工程难点。提供无第三方依赖原生 C# 完整实现,内置运动状态机,支持正反方向运动,基于解析多项式实时求解位置、速度、加速度,无积分累积误差。代码可直接用于伺服上位机、模组轨迹发生器,亦可精简移植嵌入式平台。同时对比算法优劣与适用场景,适合工控开发、伺服调试、嵌入式运动算法学习者参考。

工业上位机开发工程师,专注C#底层算法与工控仪器开发。从零手写信号滤波、曲线拟合、机器视觉、排序与密码学哈希,纯原生实现零第三方库,附数学推导与可编译源码,可移植STM32/PLC。 982

Tokenization(分词算法):一切大语言模型的地基

本文深入解析了Tokenization(分词算法)这一大语言模型的基础技术。Tokenization将原始文本切分为模型可处理的子词单元并映射为数字ID,是模型理解文本的第一步。

2301_80194949的博客 200

python3.7安装包

python3.7安装包

上一篇: 代码随想录算法训练营第六天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
下一篇: 代码随想录算法训练营第八天|344.反转字符串 ,541. 反转字符串II ,151.翻转字符串里的单词,55.右旋转字符串
老$¥
博客等级 码龄7年 145粉丝 219原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值