题目:
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.
翻译:
给你一个有顺序的数组,除去重复的元素,不要用额外控件,返回只出现一次的个数
思路:
从头遍历,因为数组是有顺序的,如果遇到当前元素和前一个元素不一样,则加入,否则继续遍历。
很简单的一道题。至于不用额外空间,直接用原来的数组位置操作即可。
代码:
public static int removeDuplicates(int[] nums) {
int count = 1;
if(nums ==null ||nums.length == 0)
{
return 0;
}
for(int i = 1;i<nums.length;i++)
{
if(nums[i]!=nums[i-1])
nums[count++] = nums[i];
}
return count;
}