5 去重基本方法

首先通过排序把相同的数字排到一齐。

然后在选择放入集合时,挑第一个出现的。

具体做法参照L16 Permutation II

//这一小段就是去重代码,如果我们在挑的数已经出现过,而且前面的那个还没被选进现在的buffer里。
//我们跳过不选这个,选前面后的。选前面的
if (i > 0 && nums[i] == nums[i - 1] && visited[i - 1] == false) {
    continue;
}

另外3sum也有去重代码,很类似

for(int i = 0; i< len - 2;i++){ // remmeber to end when we were at the 3rd last element
    //skip duplicate here
    if(i!=0 && numbers[i] == numbers[i-1]){
    continue;
    .
    .
    .
    while (...) {
        ...
        //and here
        while(left<right&&numbers[left] == numbers[left-1]){
        left++;
        }
        //and here
        while(left<right&&numbers[right] == numbers[right+1]){
        right--;
        }
    }
}

Last updated