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 nums = [1,1,2]
,
Your function should return length = 2
, with the first two elements of nums being 1
and 2
respectively. It doesn't matter what you leave beyond the new length.
题目意思是给定一个有序数组,在有序数组中有A[i+1] >= A[i];因此可以考虑维护两个游标,一个游标指向第一个元素,另外一个游标指向后一个元素,当两个元素相等时,第二个游标向后自增,只到与第一个元素不相等;此时让地一个游标指向当前第二个游标指向元素的前一个元素,即新数组的第一个元素,A[++size] = A[ i ],再往后遍历,只到便利到最后一个元素为止,返回 size + 1。代码如下: