小工具知识网

当前位置: 首页 > 行业知识 > 【算法笔记】LeetCode

行业知识

【算法笔记】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

上一篇:服务器程序错误怎么回事?

下一篇:自定义服务器怎么玩?