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 =
Given input array A =
[1,1,2]
,
Your function should return length =
2
, and A is now [1,2]
.
这道题用两个指针, 一个保留当前有效的长度 一个往后扫 因为是排序过得数组,重复元素一定是相邻的。 复杂度O(n)空集复杂度O(1).
public class Solution { public int removeDuplicates(int[] A) { if (A == null || A.length == 0){ return 0; } int index = 1; for (int i = 1; i < A.length; i++){ if (A[i] != A[i - 1]){ A[index] = A[i]; index ++; } } A = Arrays.copyOf(A, index); return index; } }
没有评论:
发表评论