15. 三数之和
1.34. 在排序数组中查找元素的第一个和最后一个位置2.69. x 的平方根3.367. 有效的完全平方数4.27. 移除元素5.26. 删除有序数组中的重复项6.283. 移动零7.844. 比较含退格的字符串8.977. 有序数组的平方9.209. 长度最小的子数组10.904. 水果成篮11.76. 最小覆盖子串12.76. 最小覆盖子串13.59. 螺旋矩阵 II14.58. 区间和(第九期模拟笔试)15.44. 开发商购买土地16.20. 有效的括号17.146. LRU 缓存18.203. 移除链表元素19.707. 设计链表20.206. 反转链表21.24. 两两交换链表中的节点22.19. 删除链表的倒数第 N 个结点23.19. 删除链表的倒数第 N 个结点 Plus24.面试题 02.07. 链表相交25.142. 环形链表 II26.242. 有效的字母异位词27.349. 两个数组的交集28.202. 快乐数29.1. 两数之和30.454. 四数相加 II31.383. 赎金信
32.15. 三数之和
33.18. 四数之和34.344. 反转字符串35.541. 反转字符串 II36.55. 右旋字符串(第八期模拟笔试)37.28. 找出字符串中第一个匹配项的下标38.459. 重复的子字符串39.232. 用栈实现队列40.225. 用队列实现栈41.20. 有效的括号practise makes perfect! 相信自己的努力不会白费,继续学习吧
class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> ans; sort(nums.begin(), nums.end()); for(int i = 0; i < nums.size(); ++i){ if(nums[i] > 0) return ans; if(i > 0 && nums[i] == nums[i -1]) continue; int left = i + 1; int right = nums.size() - 1; while(left < right){ if(nums[i] + nums[left] + nums[right] > 0){ --right; }else if(nums[i] + nums[left] + nums[right] <0){ ++left; }else{ ans.push_back(vector<int>{nums[i], nums[left], nums[right]}); while(left < right && nums[left] == nums[left + 1]) ++left; while(left < right && nums[right] == nums[right -1]) --right; ++left; --right; } } } return ans; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?