首页 > 编程语言 >letcode算法--15. 删除有序数组中的重复项

letcode算法--15. 删除有序数组中的重复项

时间:2022-09-21 11:12:43浏览次数:59  
标签:15 删除 nums -- 元素 int 数组 长度 letcode

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = [...]; // 输入数组
int[] expectedNums = [...]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[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://leetcode.cn/problems/remove-duplicates-from-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法一:快慢指针

class Solution {
    public int removeDuplicates(int[] nums) {
        int len = nums.length;
        int count = 0;
        int start = 1;
        int end = 1;
        while(start<len && end < len){
            if (nums[end] != nums[end-1]){
                nums[start] = nums[end];
                ++start;
            }
            ++end;
        }
        return start;
    }
}

 

标签:15,删除,nums,--,元素,int,数组,长度,letcode
From: https://www.cnblogs.com/xinger123/p/16714871.html

相关文章

  • 如何为swarm中的service设置需要cpu和内存?
    想象一下这个场景,你有一个服务,想要最好的运行状态,必须需要一定的CPU和内存的数量,这样的场景,如何在service中进行设置? 也就是说,为service设置一个cpu和内存的值,swarm集......
  • MAC怎么快速截图
    ​1、截取全屏按住【command】【shift】【3】这三个键即可截取全屏。​编辑2、截取某区域按住【command】【shift】【4】。​编辑3、截图完成在电脑桌面能找到......
  • 使用git上传
    先把远程仓库克隆到本地gitcloneurlcd进入仓库目录cdrepo_path修改增删仓库里的文件后,add、commit、pushgitadd.gitcommit-m'提交信息'gitpusho......
  • JAVA诊断工具
    简介Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入......
  • 数学相关知识
    常用的导数公式参考:https://blog.csdn.net/xueruixuan/article/details/78780105偏导数参考:https://netedu.xauat.edu.cn/jpkc/netedu/jpkc/gdsx/homepage/5jxsd/51/513......
  • scp双向复制命令
    实例1:从本地服务器复制到远程服务器: (1) 复制文件:  命令格式:  scp local_file remote_username@remote_ip:remote_folder  样例[email protected].......
  • 数据结构
    设计并编程实现一个应用单链表存储结构的通信录管理系统。定义适当数据类型,设计并编写完成下列8项基本功能的C语言程序:[root@huhy~]#cattest.c/*一、功能要求:1.添加......
  • Git使用教程
    目录1.主要的两类版本控制模式1.1集中式控制(代表:SVN)1.11简介1.12优点1.13缺点1.2分布式控制(代表:GIT)1.21简介1.22优点1.23缺点2.GIT的环境安装2.1通过Homebrew安......
  • vue富文本(5版本)组件
    <template><div><divstyle="border:1pxsolid#ccc;width:500px"><!--工具栏--><Toolbarstyle="border-bottom:1pxsolid#ccc":editor="......
  • 异或运算
    1.异或:相同为假(0),相异为真(1)2.基本运算:1⊕1=00⊕0=01⊕0=10⊕1=13.两个特性:恒等律——X⊕0=X归零律——X⊕X=0同样的可以用真值表证明交......