/**
 *
 * @param num int整型一维数组
 * @return int整型二维数组
 */
function threeSum(num) { //暴力双指针
  num.sort((a, b) => {
    return a - b;
  });
  let res = [];
  let i = 0;
  while(i < num.length) {
    let a = num[i];
    let flag1 = i + 1,
      flag2 = num.length - 1;
    while (flag1 < flag2) {
      let b = num[flag1],
        c = num[flag2];
      let sum = a + b + c;
      if (sum === 0) {
        res.push([a, b, c]);
        while (b == num[flag1]) {
          flag1++;
        }
         while (c == num[flag2]) {
          flag2--;
        }
      } else if (sum < 0) {
        while (b == num[flag1]) {
          flag1++;
        }
      } else {
        while (c == num[flag2]) {
          flag2--;
        }
      }
    }
    while(a == num[i]){
        i++;
    }
  }
  return res;
}
module.exports = {
  threeSum: threeSum,
};