Remove Duplicates from Sorted Array

Question

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

Example


题解

C++

class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
if (nums.size() <= 1) return nums.size();

int len = nums.size();
int newIndex = 0;
for (int i = 1; i< len; ++i) {
if (nums[i] != nums[newIndex]) {
newIndex++;
nums[newIndex] = nums[i];
}
}

return newIndex + 1;
}
};


Java

public class Solution {
/**
* @param A: a array of integers
* @return : return an integer
*/
public int removeDuplicates(int[] nums) {
if (nums == null) return -1;
if (nums.length <= 1) return nums.length;

int newIndex = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[newIndex]) {
newIndex++;
nums[newIndex] = nums[i];
}
}

return newIndex + 1;
}
}