type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 18, 2025 02:21 PM
给你一个整数数组
nums
,判断是否存在三元组 [nums[i], nums[j], nums[k]]
满足 i != j
、i != k
且 j != k
,同时还满足 nums[i] + nums[j] + nums[k] == 0
。请你返回所有和为 0
且不重复的三元组。注意:答案中不可以包含重复的三元组。
双指针
先排序。固定一个数,然后将两个指针分别指向剩下数字的两端,接着向中间移动。
优化 1:
if (x + nums[i + 1] + nums[i + 2] > 0)
,如果当前的三个连续数字加起来已经大一 0, 后面没必要算了。如果 x + nums[n - 2] + nums[n - 1] < 0
,后面数字会越来越大,说不定就能凑成功。