删除排序数组中的重复项。
给你一个有序的数组编号,请删除重复的元素,使每个元素只出现一次,并返回被删除数组的新长度。
不要使用额外的数组空间,必须在原地修改输入数组,并用O(1)个额外空间完成。
解释:
为什么返回值是整数,而输出答案是数组?
请注意,输入数组是通过“引用”传递的,这意味着在函数中修改输入数组对调用方是可见的。
你可以把内部操作想象成:
//nums通过“引用”传递。也就是说,不要复制任何实际参数。
int len=remove Duplicates(nums);
//修改函数中的输入数组对调用方是可见的。
//根据您的函数返回的长度,它将打印出数组中长度范围内的所有元素。
for(int I=0;我透镜;I){ 0
打印(nums[I]);
}
例1:
输入:nums=[1,1,2]。
输出:2,nums=[1,2]。
解释:函数应该返回新的长度2,原始数组nums的前两个元素应该修改为1,2。数组中超出新长度的元素不需要考虑。
例2:
输入:nums=[0,0,1,1,1,2,2,3,3,4]。
输出:5,nums=[0,1,2,3,4]。
解释:函数应该返回新的长度5,原始数组nums的前五个元素应该修改为0,1,2,3,4。数组中超出新长度的元素不需要考虑。
作者:LeetCode。
链接:https://leet code-cn.com/leet book/read/top-面试-提问-easy/x2gy9m/
资料来源:LeetCode。
版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。
解决方案类{
public int remove duplicates(int[]nums){ 0
int left=0,right=1,count=1;//双指针,左边用来定位交换位置,右边用来查找不同的元素,count是计数器。
While(rightnums.length){ //用一个循环找到左右两个不同的位置并交换。
if(nums[left]!=nums[right]){
向左;
nums[左]=nums[右];
计数;
}else{
右;
}
}
返回计数;//返回计数器。
}
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67485.html