一个小时+
主要思路:排序+双指针
nums[i]为每一次循环的头元素,nums[left] nums[right]为nums[i]的右边元素【其右边的前后指针】
先确定一个元素nums【i】再+nums【left】+nums【right】
由于相同元素是相邻的,于是nums【i】去重则i++,nums【left】去重则left++,nums【right】去重则right--;
为什么每确定一个满足条件的组合之后,前后指针要一起移动,因为在nums[i]不动的情况,只有前后指针一起移动才可能找到满足的组合
数是可以重复利用的,但相同组合不行,通过去除重复的数来避免形成重复组合