首页 > 其他分享 >力扣---26. 删除有序数组中的重复项

力扣---26. 删除有序数组中的重复项

时间:2023-03-05 21:12:06浏览次数:52  
标签:p2 力扣 26 p1 nums int 元素 --- 数组

给你一个 升序排列 的数组 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 。不需要考虑数组中超出新长度后面的元素。

提示:
    1 <= nums.length <= 3 * 104
    -104 <= nums[i] <= 104
    nums 已按 升序 排列
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

双指针。

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 1) {
            return 1;
        }
        int p1 = 0;
        int p2 = 0;
        while (p2 < nums.length) {
            nums[p1] = nums[p2];
            ++ p1;
            ++ p2;
            while (p2 < nums.length && nums[p2] == nums[p1 - 1]) {
                ++ p2;
            }
        }
        return p1;
    }
}

标签:p2,力扣,26,p1,nums,int,元素,---,数组
From: https://www.cnblogs.com/allWu/p/17181679.html

相关文章

  • java-springmvc
    1、入门案例1.1、导包<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version></dependency><de......
  • 设计模式-javascript实现【迭代器模式】
    定义:迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之......
  • Vulnhub DC-9靶场WriteUP
    Recon  首先使用netdiscover扫描靶机,靶机IP地址为192.168.244.135。┌──(kali㉿kali)-[~]└─$sudonetdiscover-r192.168.244.0/24Currentlyscanning:192.1......
  • 造价管理-2-4- 合同权利义务的终止
    正文什么叫权利义务的终止,说白了就是两清flowchartRLA[合同权利义务的终止]---1.债务已经履行A---2.债务相互抵消A---B["3.将标的物提存(债务人操作)"]A---4.免除债......
  • 财政收入影响因素分析及预测(2014-2016)
    importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltdata=pd.read_csv('./data/data.csv')data#%%x=data.iloc[:,0:-1]y=data.iloc[:,-1]......
  • 08-Redis系列之-Redis布隆过滤器,MySQL主从,Django读写分离
    Redis实现布隆过滤器前言布隆过滤器使用场景比如有如下几个需求:原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?解决办......
  • 07-Redis系列之-双写一致性,缓存详解和优化点
    双写一致性redis和mysql数据同步方案先更新数据库,再更新缓存(一般不用)先删缓存,再更新数据库(在存数据的时候,请求来了,缓存不是最新的,一般也不用)先更新数据库,再删缓存(请求......
  • 人物速写随笔---下肢简略建剖
         ......
  • Book-深入设计模式-适配器模式
    Book-深入设计模式-适配器模式https://refactoringguru.cn/design-patterns/adapter适配器模式亦称:封装器模式、Wrapper、Adapter适配器模式是一种结构型设计模式,它......
  • 05-Redis系列之-主从复制配置和优化,fork和aof两大阻塞
    主从复制原理一台主服务器配多台从服务器,主服务器宕机后,从服务器挑选一台顶上去。从服务器同步主服务器的数据,这个同步是单向的,并且从服务器不能设置值,否则会造成数据的......