码迷,mamicode.com
首页 > 其他好文 > 详细

【Remove Duplicates from Sorted Array II】cpp

时间:2015-04-15 09:28:28      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

题目

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array A = [1,1,1,2,2,3],

Your function should return length = 5, and A is now [1,1,2,2,3].

 

代码

class Solution {
public:
    int removeDuplicates(int A[], int n) {
        if (n <= 2) return n;
        int index = 2;
        for (int i=2 ; i<n; i++)
        {
            if ( A[index-2]!=A[i] )
            {
                A[index++] = A[i];
            }
        }
        return index;
    }
};

 

Tips:

1. index始终指向下一个要插入元素的位置

2. 判断当前元素与index-2位置元素是否相等,如果不等就可以插入,保证没有连续三个相同的元素

3. 这里用到些数学归纳法的技巧:

  a. 只要保证第1-第3个元素不是都相同的

  b. 并且再后面每一步添加元素的时候判断都不是相同的

 则可得结论一直到条件结束,调整后的数组中不会有三个连续重复的元素

【Remove Duplicates from Sorted Array II】cpp

标签:

原文地址:http://www.cnblogs.com/xbf9xbf/p/4427570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!