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]
.
解法很简单,边界条件A为null或者长度为0,返回0;否则,用variable size来维护题目要求的数组的当前下标,直到发现不一样的元素时,将size所指的下一个空间赋值。最终需要返回的应该是长度,即最后元素下标+1;
public class Solution { public int removeDuplicates(int[] A) { if (A == null || A.length == 0){ return 0; } int size = 0; int len = A.length; for (int i = 0; i < len; i++){ if (A[i] != A[size]){ A[++size] = A[i]; } } return size+1; } }