#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param num int整型一维数组 
# @return int整型二维数组
#
class Solution:
    def threeSum(self , num: List[int]) -> List[List[int]]:
        # write code here
        num = sorted(num)
        res = []
        for i in range(len(num)):
            low = i + 1
            high = len(num) - 1
            a = num[i]
            while low < high:
                b = num[low]
                c = num[high]
                if (a + b + c) == 0:
                    if [a, b, c] not in res:
                        res.append([a, b, c])
                    while high > 0 and num[high] == num[high - 1]:
                        high -= 1
                    high -= 1
                    while low < len(num) - 1 and num[low] == num[low + 1]:
                        low += 1
                    low += 1
                elif (a + b + c) > 0:
                    while high > 0 and num[high] == num[high - 1]:
                        high -= 1
                    high -= 1
                elif (a + b + c) < 0:
                    while low < len(num) - 1 and num[low] == num[low + 1]:
                        low += 1
                    low += 1
        return res