/**
 * 真题描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
 * 注意:答案中不可以包含重复的三元组。
 * 
 * 给定数组 nums = [-1, 0, 1, 2, -1, -4], 
 * 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]
 */
let arr = [-1, 0, 1, 2, -1, -3]
function sort(arr) {
  arr = arr.sort((a, b) => a - b)
  let arr2 = []
  // let i = 0, k = i + 1, j = arr.length - 1
  let len = arr.length
  for (let i = 0; i < len - 2; i++) {
    let k = i + 1
    let j = len - 1
    // 排除重复的
    if (i >= 0 && arr[i] === arr[i - 1]) {
      continue
    }
    while(k < j) {
      let temp = arr[i] + arr[k] + arr[j]
      if (temp > 0) {
        j--
      } else if (temp < 0) {
        k++
      } else {
        let k2 = [arr[i], arr[k], arr[j]]
        i++
        k = i + 1
        j = arr.length - 1
        arr2.push(k2)
      }
    }
  }
  return arr2
}

console.log(sort(arr))