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 ,后面数字会越来越大,说不定就能凑成功。