和I相比,最多可有两个重复的数字,所以在I的基础上,增加一个bool变量isFirst,如果只出现一次的话,就可以继续往后移一位,否则等待出现下一个不同的值时才将新的值写入。
注意边界条件(老忘真不好,心中默念一百遍!)。
int removeDuplicates(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n <= 0) return 0; int result = 0; bool isFirst = true; int i; for(i = 1; i < n; i++){ if(A[i] != A[result]){ A[++result] = A[i]; isFirst = true; } else{ if(isFirst){ isFirst = false; A[++result] = A[i]; } } } return result+1; }