function threeSums(nums: number[]): number[][] {
const result: number[][] = []
// 先对数组进行排序
nums.sort((a, b) => a - b)
// 遍历数组
for (let i = 0
// 如果当前元素与前一个元素相同,跳过避免重复
if (i > 0 && nums[i] === nums[i - 1]) {
continue
}
let left = i + 1
let right = nums.length - 1
// 寻找三数之和等于0的组合
while (left < right) {
const sum = nums[i] + nums[left] + nums[right]
if (sum === 0) {
result.push([nums[i], nums[left], nums[right]])
// 跳过重复元素
while (left < right && nums[left] === nums[left + 1]) {
left++
}
while (left < right && nums[right] === nums[right - 1]) {
right--
}
left++
right--
} else if (sum < 0) {
left++
} else {
right--
}
}
}
return result
}
const numa = [-1, 0, 1, 2, -1, -4]
const result = threeSums(numa)
console.log(result)