阅读598 返回首页    go 阿里云 go 技术社区[云栖]


[LeetCode]26.Remove Duplicates from Sorted Array

Remove Duplicates from Sorted Array

 Total Accepted: 6585 Total Submissions: 19851My Submissions

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array A = [1,1,2],

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

【解析】

每次和已经记录的最后一个数组元素比较,如果重复就跳过,否则将其加入数组末尾。

【代码】

/*********************************
*   日期:2014-01-14
*   作者:SJF0115
*   题目: 26.Remove Duplicates from Sorted Array
*   来源:https://oj.leetcode.com/problems/remove-duplicates-from-sorted-array/
*   结果:AC
*   来源:LeetCode
*   总结:
**********************************/
#include <iostream>
#include <stdio.h>
using namespace std;
// 时间复杂度 O(n),空间复杂度 O(1)
class Solution {
public:
    //A数组的重要特点是已经排序
    int removeDuplicates(int A[], int n) {
        if(n == 0){
            return 0;
        }
        //新数组下标
        int index = 0;
        for(int i = 1;i < n;i++){
            if(A[i] != A[index]){
                A[++index] = A[i];
            }
        }
        return index+1;
    }
};
int main() {
    int result;
    Solution solution;
    int A[] = {1,1,2,2,2,2,4,4,5,6,8};
    result = solution.removeDuplicates(A,11);
    printf("Length:%d\n",result);
    for(int i = 0;i < result;i++){
        printf("%d ",A[i]);
    }
    return 0;
}








最后更新:2017-04-03 12:54:29

  上一篇:go android调用服务端的js
  下一篇:go 使用StyleCop进行代码审查