Leetcode 三数之和

双指针法:
将数组按照从大到小排序后,定义两个指针,分别指向第i+1和第len-1个元素,根据nums[i]+nums[left]+nums[right]和0的关系,选择left++或者right--,一直循环到left==right为止。又因为不能有重复的输出,所以在遍历时,要去除第i个元素后相同的元素,同理,需要在找到nums[i]+nums[left]+nums[right]=0,更新left和right时,去除重复的元素。

Hash函数法
将nums[i]作为外层,内层nums[j],利用unordered_map,寻找-nums[i]-nums[j],如果unordered_map中没有找到,将nums[j]插入unordered_map,j++继续循环。如果找到了,保存结果,j++,并且防止输出重复的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值