免费1级做看网站,互联网行业都有哪些工作赚钱,南昌地宝网分类信息网,合肥 网站制作给你一个有序数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。
不要使用额外的数组空间#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
我没注意到“有序”这一条…给你一个有序数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。
不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
我没注意到“有序”这一条件这一写法也适用于无序的最后的倔强 思路fast用于寻找不重复的元素slow存储已经筛选过的元素。将每个元素与已经重排的元素比较如果没有就添加进去如果有就跳过。不是和nums后面的比较这点我第一次就搞反了
class Solution {public int removeDuplicates(int[] nums) {int slow 0;for(int fast 1;fastnums.length;fast){//从第二个元素向前比较所以fast取1不取0for(int j 0;jslow1;j){//遍历已经重排的部分也就是nums[]前面的部分if(nums[fast]nums[j]){break;//出现重复说明前面部分已经有这个元素了}if(jslow){//遍历结束判断说明前面部分没有这个元素nums[slow] nums[fast];//把这个元素加进去}}}return (slow1);//slow是最大下标不是元素个数}
}双指针“slow”“fast”真好用啊