3Python 中的 Sum
pythonserver side programmingprogramming更新于 2025/10/25 12:28:17
假设我们有一个数字数组。它存储 n 个整数,数组中有元素 a、b、c,使得 a + b + c = 0。在数组中查找满足该情况的所有唯一三元组。因此,如果数组为 [-1,0,1,2,-1,-4],则结果将是 [[-1, 1, 0], [-1, -1, 2]]
为了解决这个问题,我们将遵循以下步骤 −
- 对数组 nums 进行排序,并定义一个数组 res
- 对于 i,范围为 0 到数字 – 3 的长度
- if i > 0 且 nums[i] = nums[i - 1],则跳过下一部分并继续
- l := i + 1 且 r := nums 的长度 – 1
- 当 l < r
- sum := nums[i]、nums[l] 和 nums[r] 的总和
- 如果 sum < 0,则 l := l + 1,否则当 sum > 0,则 r := r – 1
- 否则将 nums[i]、nums[l]、nums[r] 插入到 res 数组中
- 当 l < nums 的长度 – 1 和 nums[l] = nums[l + 1]
- 将 l 增加 1
- 当 r > 0 和 nums[r] = nums[r - 1]
- 将 r 减少 1
- 将 l 增加 1 并将 r 减少 1
- 返回 res
示例(Python)
让我们看看以下实现以获得更好的理解 −
class Solution(object): def threeSum(self, nums): nums.sort() result = [] for i in range(len(nums)-2): if i> 0 and nums[i] == nums[i-1]: continue l = i+1 r = len(nums)-1 while(l<r): sum = nums[i] + nums[l] + nums[r] if sum<0: l+=1 elif sum >0: r-=1 else: result.append([nums[i],nums[l],nums[r]]) while l<len(nums)-1 and nums[l] == nums[l + 1] : l += 1 while r>0 and nums[r] == nums[r - 1]: r -= 1 l+=1 r-=1 return result ob1 = Solution() print(ob1.threeSum([-1,0,1,2,-1,-4]))
输入
[-1,0,1,2,-1,-4]
输出
[[-1,-1,2],[-1,0,1]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

