面试真题

算法 · 中等 · 腾讯

算法:三数之和(Leetcode 15)

中等 算法 🎤 腾讯
参考答案
结论:三数之和通过排序加双指针在O(n^2)内找出所有和为0且不重复的三元组。核心要点:1) 数组升序排序;2) 枚举第一个数i,若nums[i]>0提前结束,若nums[i]==nums[i-1]跳过去重;3) 左指针l=i+1,右指针r=n-1,计算sum=nums[i]+nums[l]+nums[r];sum==0时记录并同时移动l、r跳过重复值,sum<0则l++,sum>0则r--。原理:排序使双指针能有效缩小搜索区间;固定一个数将三数转化为两数之和,去重保证结果唯一。时间O(n^2),空间O(1)(忽略排序栈)。示例:[-1,0,1,2,-1,-4]得[[-1,-1,2],[-1,0,1]]。
题目整理自公开面经,答案由校招宝自研生成,仅供参考