行业知识
【算法笔记】LeetCode
2026-11-08 16:52:52
来源:互联网转载
LeetCode_15_三数之和
LeetCode 15 (LeetCode 15)
()题目描述
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请
你返回所有和为 0 且不重复的三元组。
()**注意:**答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]] 解释: nums[0]
- nums[1] + nums[2] = (-1) + 0 + 1 = 0 。 nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。 nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。 注意,输出的顺序和三元组的顺序并不重要。
示例 2:
输入:nums = [0,1,1] 输出:[]
解释:唯一可能的三元组和不为 0 。
示例 3:
输入:nums = [0,0,0] 输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。
提示:
- 3 // 初始化左右指针 int left = start; int right = nums.size() - 1; vector return ret; } // 使用双指针法查找两数之和 while(left != right) { int sum = nums[left] + nums[right]; int his_left = nums[left]; int his_right = nums[right]; // 如果左边的数大于目标值,说明需要减小左边的数,直接跳出循环 if (his_left target) { break; } // 如果当前和大于目标值,右指针向左移动 if (sum target) { while(left
上一篇:服务器程序错误怎么回事?
下一篇:自定义服务器怎么玩?