1. 程式人生 > >從有序陣列中移除相等的數值

從有序陣列中移除相等的數值

題目描述

  • Remove Duplicates From Sorted Array

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].

題目大意

給定一個有序陣列,移除其中相等的值,並將移除後的陣列長度返回。如例子所示。

思路

最笨的辦法就是挨個比較,每次發現了相等的數,就把後邊的數都前移一位。
這裡用的辦法是:維護兩個指標,第一個指標記錄不相同的數值,第二個指標挨個向後遍歷,不相同就用第一個指標記錄下來。

程式碼

int removeDuplicates(int A[], int n) {
    if(A==NULL || n<1)return n;
    int count = 1; // count記錄不重複元素的個數
    for(int i=1; i<n; i++)
    {
        if(A[i] != A[i-1]) // 相等就跳過
            A[count++] = A[i]; // 不相等就留下
    }
    return count;
}
  • 以上。

版權宣告:本文為博主原創文章,轉載請註明出處。
個人部落格地址:https://yangyuanlin.club
歡迎來踩~~~~