这些是我刷了题之后的coding细节处理
这个问题经常出错。例如函数开头定义了一个ret,就一个while或者一个for这种,中间会修改这个ret,结尾返回这个ret,这个ret的初始值就非常重要。值就是特殊用例这几个循环根本就不会进的时候,函数返回值依然是正确的。
双指针的时候{1,1,2,2,3,3},例如要left_index+right_index的和等于固定值。那相同的参数就完全没有讨论的必要,如果要求列出不能重复的组合就更麻烦了。
do { i++; }while(i<(int)a.size() && a[i-1]==a[i]);
这里一定注意i-1和i,i和i+1的区别。例如{0,0,-2,2}的四个数为0的集合。如果用i和i+1就不会有四个数,因为下标直接就到1了,不会出现下标为0的情况。