首页 > 其他分享 >80. 删除有序数组中的重复项 II(中)

80. 删除有序数组中的重复项 II(中)

时间:2024-01-27 11:44:06浏览次数:30  
标签:slow nums 元素 II 数组 长度 80 输入

目录

题目

  • 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
    不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

  • 说明:

为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);
// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}

示例 1:

输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7, nums = [0,0,1,1,2,3,3]
解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。

题解:双指针

class Solution(object):
    def removeDuplicates(self, nums):
        slow = 0#指向当前即将放置元素的位置
        for fast in range(len(nums)):#向后遍历所有元素
            if slow < 2 or nums[fast] != nums[slow - 2]:# 如果当前位置小于2(即前两个元素),或者当前元素与slow位置前两个元素不相等
                nums[slow] = nums[fast]# 将当前元素放置在slow位置
                slow += 1# slow指针向后移动
        return slow

标签:slow,nums,元素,II,数组,长度,80,输入
From: https://www.cnblogs.com/lushuang55/p/17991264

相关文章

  • windowForm程序的webView2错误 System.IO.FileNotFoundException: 系统找不到指定的文
    最近开发公司的一个项目,要求打包在windows中执行的exe可执行文件开始我想到的是使用windowsForm里面webView嵌套网页执行,vs自带提供的WebBrowser的内核是ie7的,兼容性确实不好,后面使用Microsoft.Web.WebView2(通过NuGet安装)兼容性问题解决了。在我的电脑上可以完整的运行,但是在同......
  • D55XT80-ASEMI整流桥D55XT80参数、封装、尺寸
    编辑:llD55XT80-ASEMI整流桥D55XT80参数、封装、尺寸型号:D55XT80品牌:ASEMI封装:DXT-5最大重复峰值反向电压:800V最大正向平均整流电流(Vdss):55A功率(Pd):芯片个数:4引脚数量:5类型:插件、整流桥正向浪涌电流:550A正向电压:1.10V最大输出电压(RMS):封装尺寸:如图工作温度:-55°C~150°CD55XT80特性......
  • D55XT80-ASEMI整流桥D55XT80参数、封装、尺寸
    编辑:llD55XT80-ASEMI整流桥D55XT80参数、封装、尺寸型号:D55XT80品牌:ASEMI封装:DXT-5最大重复峰值反向电压:800V最大正向平均整流电流(Vdss):55A功率(Pd):芯片个数:4引脚数量:5类型:插件、整流桥正向浪涌电流:550A正向电压:1.10V最大输出电压(RMS):封装尺寸:如图工作温度:-55°C~1......
  • 动态区间求和——树状数组的基本应用
    目录前言问题引入思路一览具体分析前言准确来说,不应该叫做动态区间求和问题,只能说树状数组经常用于求和操作而已,但是正常的动态条件查询树状数组也是可以做的,具体的下面再说吧问题引入给出一个数组a[],要求做两种操作,一种是修改数组中的一个数,一种是实现查询区间[lt,rt](lt<=......
  • C#数组对象池ArrayPool<T>底层
    深度解析C#数组对象池ArrayPool<T>底层原理 提到池化技术,很多同学可能都不会感到陌生,因为无论是在我们的项目中,还是在学习的过程的过程,都会接触到池化技术。池化技术旨在提高资源的重复使用和系统性能,在.NET中包含以下几种常用的池化技术。(1)、连接池(Connecti......
  • IU5186兼容IU5180集成30V的OVP功能,3A升降压充电,1~4节锂电池
    IU5186C是一款自动申请快充输入,开关模式升降压充电管理IC,用于1~4节锂离子电池和锂聚合物电池,以及1~5节磷酸铁锂电池。芯片集成包括4开关MOSFET、输入和充电电流感应电路、电池以及升降压转换器的环路补偿。芯片具有3A的充电电流能力,充电电流可以通过外部电阻灵活可调。IU5186C内置......
  • 【板子】树状数组(BIT)
    //lg1908求逆序对//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=(int)1e6+6;llsum;intn;structData{intorigin;intls;intid;}data[N];boolcmporigin(Datax,Datay){r......
  • 树状数组(区间修改&&区间查询)
    #include<bits/stdc++.h> #defineintlonglongusingnamespacestd;intn,m,x,x1,y,z;inta[100010],d[100010],c[100010];intlowbit(intnum){returnnum&-num;}voidadd(intx,inty){ inta=x; while(x<=n)d[x]+=y,c[x]+=(a-1)*y,x+=lowbit(x); ......
  • 15 个写代码的好习惯(可以减少 80% 非业务的 bug)
    引言作为一名刚入行的程序员,平时在编写代码时最好养成一些好习惯,这样可以避免或减少各种非业务的bug,从而提高开发效率,这里总结了常见的15个平时写代码的好习惯,希望对你有所帮助。1.修改完代码,记得自测一下「改完代码,自测一下」是每位程序员必备的基本素养。尤其不要抱有这......
  • 167. 两数之和 II - 输入有序数组(中)
    目录题目题解:双指针题目给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1<=index1<index2<=numbers.length。以长度......