多平台统一管理软件接口,如何实现多平台统一管理软件接口
242
2022-10-18
[leetcode数组系列]3 删除排序数组中的重复项
前言
秋招的结束,面试了大大小小的公司,最大的问题在于算法上。所以打算坚持在leetcode打卡,看看到底能不能行,如果你想见证,那我来开车,你坐稳,一起走向更好的远方。2020=1024+996,准备好了?
一 题目
[26 删除排序数组中的重复项]给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
1 leetcode原文链接nums = [1,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。你不需要考虑数组中超出新长度后面的元素。
2 思路1---快慢指针
这里注意审题,数组本身已经排序,重复的数字就是连续的哟。
我们先定义两个指针,慢指针i和快指针,如果num[i]=num[j],我们就让快指针j跳过重复项。如果num[i]!=num[j],那么久=nums[i++]=num[j],然后同时前进下面我们看看图。
class Solution {public: int removeDuplicates(vector 3 思路1优化 如果我们的排序数组没有重复的元素,按照上面的思路我们会出现多余的复制操作,所以借此可以优化一下。当num[i]!=nums[j],而且j-i>1的时候我们才进行复制,如下图所示。 class Solution {public: int removeDuplicates(vector 4 总结
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~