remove duplicates from sorted array I&II

remove duplicates from sorted array I&II

I not hard

Use two pointer i = 0 and j = 1.If they are the same , pointj to the next. Otherwise, put A[j] to the next of i, then point j to the next.

 1 class Solution {
 2 public:
 3     int removeDuplicates(int A[], int n) {
 4         if ( n <= 1 ) {
 5             return n;
 6         }
 7         int i = 0;
 8         int j = 1;
 9         while ( j < n ) {
10             if ( A[i] == A[j] ) {
11                 j++;
12             } else {
13                 A[++i] = A[j++];
14             }
15         }
16         return i+1;
17     }
18 };

II not hard too

Use some a valiable to record the times A[i] and A[j] are same.Then do the same thing.Attention that when they are same and mark is not reach 1, donot forget set A[++i] with A[j++].

 1 class Solution {
 2 public:
 3     int removeDuplicates(int A[], int n) {
 4         if ( n <= 2 ) {
 5             return n;
 6         }
 7         int mark = 0;
 8         int i = 0;
 9         int j = 1;
10         while ( j < n ) {
11             if ( A[i] == A[j] ) {
12                 if ( mark < 1 ) {
13                     A[++i] = A[j++];
14                     mark++;
15                 } else {
16                     j++;
17                 }
18             } else {
19                 A[++i] = A[j++];
20                 mark = 0;
21             }
22         }
23         return i+1;
24     }
25 };

Loading Disqus comments...
Table of Contents