Remove Duplicates from Sorted Array && Remove Duplicates from Sorted Array II

来源:互联网 发布:社交软件 英文翻译 编辑:程序博客网 时间:2024/06/05 16:03

Remove Duplicates from Sorted Array

移除数组中相同的元素。这题和上题是类似的。

我的思路:

1  有了上题的经验,两个指针移动,相等的时候不做任何动作,循环会让后面的指针一直移动到和前面的指针不相等的时候,再把值赋给前面的指针后一个。注意:一定要判断是空数组的情况,也就是n小于1的时候。

        if (n < 1)             return n;         int start = 0;                  for (int i = 1; i != n; i++)             if (A[start] != A[i])                  A[++start] = A[i];         return ++start;

Remove Duplicates from Sorted Array II

我的思路:

1、最多可以有两个相同的。

2、我的思路是设置一个标识来表示出现过没有,如果题目改成了其他条件,我们只需要在判断中修改成相应的数字即可。

3、但是代码还是不够简介,思路不够优化。

我的代码:

int removeDuplicates(int A[], int n) {    if (n <= 2)        return n;    int cur = 0;    int duplicate = false;    for (int i = 1; i < n; i++) {        if (A[cur] != A[i]) {            A[++cur] = A[i];            duplicate = false;        }        else if (!duplicate){            A[++cur] = A[i];            duplicate = true;        }    }    return ++cur;}


别人思路:

1、需要的就是这样的代码,来自leetcode讨论区。

2、这里没有设置什么标志,直接利用下标的差值就可以完成判断。

int removeDuplicates(int A[], int n) {    if (n <= 2) return n;       // no need to deal with n<=2 case.    int len = 2, itor = 2;    while (itor < n) {        if (A[itor] != A[len-2])             A[len++] = A[itor];        itor++;    }    return len;}


反思:思路还是不够开


0 0
原创粉丝点击