【重点】【双指针】18.四数之和

代码随想录算法训练营Day07 | 454.四数相加II、383. 赎金信 、15. 三数之和 、18. 四数之和 阅读详情

题目
跟三数之和思路完全一致,都是双指针问题

双指针

Python

最朴素版本代码!

class Solution:
    def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
        res = []
        if len(nums) < 4:
            return res
        n = len(nums)
        nums.sort()
        for a in range(n-3):
            if a > 0 and nums[a] == nums[a-1]: continue
            for b in range(a+1, n-2):
                if b > a + 1 and nums[b] == nums[b-1]: continue
                c, d = b+1, n-1
                while c < d:
                    if nums[c] + nums[d] < target - nums[a] - nums[b]:
                        c += 1
                    elif nums[c] + nums[d] > target - nums[a] - nums[b]:
                        d -= 1
                    else:
                        res.append([nums[a], nums[b], nums[c], nums[d]])
                        c += 1
                        d -= 1
                        while c < d and nums[c] == nums[c-1]:
                            c += 1
                        while c < d and nums[d] == nums[d+1]:
                            d -= 1
        
        return res
免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧) 本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。 阅读详情

相关推荐

STM32 RC522串口驱动程序 (简单直接)

rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" /////////////////////////////////

qq_42074368的博客 9001

《算法闯关指南:优选算法-双指针》--07三数之和,08四数之和

本文介绍了LeetCode中三数之和与四数之和问题的解题思路。通过排序+双指针算法优化暴力解法,重点讲解了去重操作的实现方法。对于三数之和,固定一个数后用双指针在剩余区间寻找两数之和;四数之和则通过固定两个数后转化为三数之和问题。文章提供了详细的C++代码实现,并附上手写算法思路笔记,帮助读者理解解题关键点。最后作者感谢读者支持,并欢迎点赞评论。

会当凌绝顶,一览众山小 1568

武汉大学朱玉贤院士团队再发Nature Genetics,阐述棉花独特折叠胚胎形成的分子调控与演化机制

武汉大学朱玉贤院士团队再发Nature Genetics,阐述棉花独特折叠胚胎形成的分子调控与演化机制。

Pangenes的博客 1334

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

视频链接:学透哈希表,map使用有技巧!LeetCode:454.四数相加II_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!,字符串这么玩,可有点难度!| LeetCode:459.重复的子字符串,学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词,讲透二叉树的层序遍历 | 广度优先搜索 | LeetCode:102.二叉树的层序遍历,贪心算法理论基础!,字符串操作进阶!

qq_73932604的博客 746

基于STM32和K210的自动驾驶小车设计

自动驾驶技术正在迅速发展,成为了汽车行业和智能交通领域的热点之一。随着科技的发展,STM32和K210这两款芯片为自动驾驶小车提供了优秀的硬件支持。本文我们将学习如何使用STM32和K210打造一个简单的自动驾驶小车。提示:以下是本篇文章正文内容,下面案例可供参考通过这篇文章,掌握了如何使用STM32和K210构建一个简单的自动驾驶小车。通过了解基本的电路设计,并编写了STM32和K210的代码。通过这个例子,可以更好地理解如何在嵌入式系统中使用STM32和K210,以及如何实现自动驾驶小车的简单功能。

Kyle_Chan_zMH的博客 2216

避开SAM3安装大坑:手把手教你用国内镜像和Modelscope权重快速跑通Demo

本文详细介绍了如何在国内环境下快速部署SAM3视觉大模型,包括使用国内镜像加速Python包安装、通过Modelscope获取权重文件以及解决CUDA 11.8等低版本适配问题。手把手教你避开常见安装陷阱,实现高效Demo运行。

weixin_30642561的博客 1406

代码随想录算法训练营第7天|LeetCode454.四数相加||、LeetCode383.赎金信、LeetCode15.三数之和、LeetCode18.四数之和

代码随想录算法训练营第7天|LeetCode454.四数相加||、LeetCode383.赎金信、LeetCode15.三数之和、LeetCode18.四数之和

weixin_63948917的博客 1481

解决DevExpress汉化后不生效的5个常见问题及修复方法

本文详细解析了DevExpress汉化后不生效的5个常见问题及修复方法,包括汉化包部署位置验证、运行时缓存清除、权限与执行上下文排查、版本兼容性检测以及开发环境配置检查。通过实战案例和具体操作步骤,帮助开发者快速解决汉化失效问题,提升开发效率。

weixin_29232121的博客 261

代码随想录算法训练营第七天|哈希表+454.四数相加II+赎金信+三数之和+四数之和+总结

代码随想录哈希表总结。

echoliuy的博客 1148

【Lua面试】2021年Lua面试题分享(4.25更新)

lua深拷贝和浅拷贝的区别?如何实现深拷贝? lua中ipairs和pairs的区别? 链接: link.

qq_21407523的博客 2万+

解锁IPG Photonics SmartWeld系统,开启焊接新时代

SmartWeld 系统是 IPG Photonics 研发的一款先进的激光焊接解决方案,它隶属于自动化激光焊接系统类别 ,但却凭借一系列创新技术和独特设计,在众多同类产品中脱颖而出。该系统基于 IPG 在光纤激光技术领域的深厚积累,融合了先进的光束控制、智能监测和自动化控制等技术,旨在为工业制造提供高效、精准且稳定的焊接工艺。与传统激光焊接系统相比,SmartWeld 系统的独特之处首先体现在其光束控制技术上。它能够精确地调整激光束的能量分布、光斑大小和形状 ,以适应不同材料和焊接工艺的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1428

算法Day6|454-四数相加II;383-赎金信;15-三数之和;18-四数之和

一般来说哈希表都是用来快速判断一个元素是否出现集合里。对于哈希表,要知道哈希函数和哈希碰撞在哈希表中的作用。哈希函数是把传入的key映射到符号表的索引上。哈希碰撞处理有多个key映射到相同索引上时的情景,处理碰撞的普遍方式是拉链法和线性探测法。数组set(集合)map(映射)同时,不管是在哈希、链表、数组,都不可避免的出现了双指针法,这套方式可以使时间复杂度下降一个等级。三数之和、四数之和等不可重复的的元素都可以使用方法进行计算。

2401_87704405的博客 682

华为OD面试手撕真题目录

2026最新华为OD面试手撕真题 , 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解.

qq_45776114的博客 1万+

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

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

Hsusan的博客 324

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Day7 454.四数相加II 1.两数值和 15. 三数之和 18. 四数之和

15. 三数之和 18. 四数之和 不理解。

ToriaHHG的博客 430

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

sliencect的博客 340

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

代码随想录Day6哈希表:454四数相加II_383赎金信_15三数之和_18四数之和

哈希表:四数相加II_赎金信_三数之和_四数之和

XSYaaaaan的博客 1067

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

自己实现中遇到哪些困难剪枝条件今日收获,记录一下自己的学习时长解惑(补充)一般来说哈希表都是用来快速判断一个元素是否出现集合里。Set,Map,数组双指针降低复杂度454.四数相加II (简单)代码随想录。

Noah_aa的博客 986

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

454.四数相加II第454题.四数相加II学透哈希表,map使用有技巧!LeetCode:454.四数相加II目标:状态:想到了两个数组比较好处理,没想到把四个数组两两结合形成新的两个数组🤪2024/2/28由于学业繁忙,今后的博客会比较粗糙,只是记录一些自己的想法,后续有时间了会逐渐补充完善,更新频率也会降低,可能几天才会更新一篇,望谅解。

m0_64615322的博客 590

【代码随想录算法训练营——Day7】哈希表——454.四数相加II、383.赎金信、15.三数之和、18.四数之和

题解说到另一个方法,双指针法,比哈希法的代码好懂些,但看懂思路后自己去实现发现没有去重,再看题解,发现去重的代码是一行if就完事。但是加到自己的代码里并不对,经过与chatGPT的沟通,发现原因是:使用双指针时,一旦找到一个满足条件的三元组,就先记录结果,然后分别移动 left 和 right 指针,跳过重复元素。最后还是按照卡哥的代码逻辑写了,把left<right的while判断放在外面,并且要注意,对right和left去重时,要把right和左边的比,left和右边的比。以上是用哈希法实现的题目。

Blueekyyy 417

代码随想录三刷day7 | 哈希表之454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。看到题目想使用一下哈希表,但是试了一下,太麻烦了,有些细节没想清楚,时间复杂度也挺高的。

baimaozi_007的博客 431

代码随想录算法训练营第六天| 454.四数相加Ⅱ,383.赎金信,15.三数之和,18.四数之和,总结

​ 454.四数相加Ⅱ 解题思路: 1.用两个双重for循环,第一个双重for循环计算nums1和nums2中相加值所有可能性并保存到unordered_map中,键为相加的和,值为相加和出现的次数,第二个双重for循环同样计算nums3和nums4相加值得和,然后在map中寻找0 -(c+d),找到了nums1和nums2中有对应得两个元素与nums3和nums4当前遍历到的两个元素和为0,此时对计数count加上mao得value值。 ​

Cq1123581321的博客 1716

【吃饭香系列】二周目|代码随想录算法训练营第七天|454.四数相加II |383. 赎金信 |15. 三数之和 |18. 四数之和

有效的字母异位词 一个类型。都是哈希数组另放,然后范围大的样例数组先在哈希里++,范围小的–,发现负数就说明不匹配。

2401_83080774的博客 508

算法训练营第十四天| 四数之和

1、剪枝比三数之和更复杂,且不能用哈希法:三数之和的哈希实现已经很复杂了,在四个数的场景下,去重步骤更多,实现会更加复杂,因此直接用哈希法不现实。而四数之和 target 可正可负,不能简单用 nums[i] > target 剪枝,比如 [-2, -1, -1, 1],target = -3,-2 > -3 但还要继续遍历。开始看到要在 nums 数组里找四个不同的数,一开始最直观的想法自然还是用两层 for 循环先确定 nums[a] 和 nums[b],然后剩下两个数用双指针在循环中查找。

2301_76992858的博客 213

代码随想录算法训练营第6天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

代码随想录算法训练营第6天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结使用双指针可以降低一个数量集合。使用容器map,set可以优化解题过程。

qq_36771396的博客 514

【Day6】LeetCode:454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

将数组两两分组,分别将两组数据的可能总和存储在字典 sum1 和 sum2 中(key:两个数组之和,value:满足对应之和的数据有多少对)。最后只需要通过遍历 sum1 和 sum2,统计出总和为 0 的坐标可能数。)思路一致,不过最后判断的时候是 ransomNote 不能用超了 magazine 中的字母,但 magazine 中的字母可以没被用完。排序 + 双指针:考虑的输出的结果不涉及原数组的坐标,可以用排序 + 双指针的方法。判断三个数的和是否为 0,符合则添加进结果。

Storynone的博客 568
上一篇: 【重点】【DP】174.地下城游戏
下一篇: pandas.DataFrame中axis参数
Allenlzcoder
博客等级 码龄10年 925粉丝 512原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值