【代码随想录刷题】n数之和总结

在这里插入图片描述

对于15.三数之和使用双指针解法:首先一层for循环nums[i]为确定值,然后循环内有left和right下标作为双指针,找到nums[i]+nums[left]+nums[right]==0
时间复杂度为O(n^2)

对于18.四数之和使用双指针解法:首先是两层for循环nums[i]+nums[k]为确定值,然后循环内有left和right下标作为双指针,找到nums[i]+nums[k]+nums[left]+nums[right]==target
时间复杂度为O(n^3)

那么一样的道理,五数之和、六数之和等等都是采用这样的解法

对于454.四数相加II,相对于n数之和简单很多,因为n数之和是要求在一个集合中找出n个数相加等于0或者target,同时n元组不能重复。

454.四数相加II是四个独立的数组,只要找到nums1[i]+nums2[j]+nums3[k]+nums4[l]==0就可以,不硬考虑重复的四个元素相加等于0的情况。

双指针法将时间复杂度O(n^2) 的解法优化为O(n)的解法,经典例题如下:
27.移除元素
15.三数之和
18.四数之和

链表相关双指针题目
206.反转链表
19.删除链表的倒数第N个结点
142.环形链表II

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值