leetcode 26. 删除有序数组中的重复项

2023-11-02

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

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。
  • 示例 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 。不需要考虑数组中超出新长度后面的元素。

 思路:利用双指针i和j,先固定i指针,j指针向右移动并判断两个指针所指元素是否相同,因为是有序数组,所以我们只需要排除相邻的相同项

1.如果相同,j继续移动

2.不同时(也就是说在此情况之前,i指针和j指针所指的元素是相同的),将j指针所指元素的值赋给i指针,i指针向右移动一格

以此类推

C++:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        int i = 0;
        for (int j = 0; j < n; ++j) {
            if (nums[j] != nums[i]) {//j指针如果与i指针所指元素相同,j指针就向右移动一格,不相同则i指针移动
                i++;
                nums[i] = nums[j];
            }
        }
        return i + 1;
    }
};

Python:

class Solution(object):
    def removeDuplicates(self, nums):
        i,j=0,0
        while j < len(nums):
            if nums[i]!= nums[j]:
                i+=1
                nums[i]=nums[j]
            else:
                j+=1
        return i+1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode 26. 删除有序数组中的重复项 的相关文章

  • mgr未同步 mysql_MySQL MGR实现分析 - 成员管理与故障恢复实现

    此文已由作者温正湖授权网易云社区发布 欢迎访问网易云社区 了解更多网易技术产品运营经验 MySQL Group Replication MGR 框架让MySQL具备了自动主从切换和故障恢复能力 举single primary 单主 模式为例
  • 【简易心电测量电路(AD620)】

    学生版低成本心电测量 1 背景 1 1 心电图产生原理 1 2 心电信号特征 1 3 项目总体设计 2 电路设计 2 1前级放大与右腿驱动电路 2 2 低通滤波电路 2 3 50Hz陷波电路 2 4 后置放大电路 3 部分测试 3 1 前级

随机推荐

  • 以太坊原理分析(二)以太坊区块结构和账户体系

    1 引言 区块链的本质是一个分布式的数据库 因此不同时刻的用户数据的写入对应着不同的状态 比特币使用UTXO来表示状态的转移 而以太坊使用账来表示状态的转移 2 账户 以太坊中存在两种账户 分别是外部账户和合约账户 外部账户EOA 一般自然
  • js json数组获取最大、最小值

    var array index id 119 area id 18335623 name 满意度 value 100 index id 119 area id 18335624 name 满意度 value 20 inde
  • linux命令查看tcp流量,linux中查看系统活动情况报告sar命令详解

    有很多工具可以看网络流量 但我最喜欢sar sar System Activity Reporter系统活动情况报告 是目前 Linux 上最为全面的系统性能分析工具之一 可以从多方面对系统的活动进行报告 包括 文件的读写情况 系统调用的使
  • hbase 压缩配置

    对hbase 的hfile 进行snappy压缩的配置 1 gt hadoop集群必须先配置好snappy压缩 参考http hymanliu iteye com blog 2224330 2 gt 在hbase的lib native目录下
  • 数据挖掘基础学习笔记

    文章目录 一 数据挖掘基础 1 1 数据挖掘基础环境安装 1 2 Jupyter Notebook 1 2 1 介绍 1 2 2 快速使用 二 Matplotlib画图 2 1 Matplotlib简介 2 2 Matplotlib三层结构
  • mysqlz中navicat出现1064错误

    1064错误一般就是语法错误 如下 但是又并不很常见 当出现时你可能找半天也找不到 在这里我将说明我所遇到的很隐蔽的错误 当使用外键约束时 外键约束上方的 id 与下方拼写的 外键约束代码 之间是不加 的
  • 各种光源(灯)的光谱

    1 荧光 灯350 700nm 一般的 荧光 灯的荧光粉采用三波长荧光粉的不同类型灯管所发出光的分布 说简单就是452n 533nm 611nm 三个波长 2 白炽灯 基本在400nm 由于白炽灯是钨丝的热效应发光 波长主要集中在可见光偏红
  • java多线程使用详解与案例,超详细

    文章目录 线程lamda表达式方式启动 简单 常用 java使用多线程的三种方式 继承Thread 实现Runnable 实现Callable 线程池的使用 守护线程 使用lamda表达式简化java的书写简单化案例如下 多线程综合案例 1
  • Java 连接池 用尽_连接池已经耗尽的表现是什么?解决方法是什么?

    作为程序员的话难免经常跟数据库打交道 了解连接池倒是也不奇怪 进而知道连接池也正常 那么你是否清楚连接池已经消耗殆尽的表现是什么吗 一般怎么解决呢 有时候在通过其中一台数据库客户端连接访问服务器上的DB 所有对象 表 视图 存储过程 都打不
  • maven异常:Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.2

    好像用依赖的方式将上面的jar包导入prom文件 idea会报错 下载该jar包会失败 两个解决方案 方案一 1 下载sqljdbc42 jar包 官网地址 https www microsoft com en us download de
  • Obliv-C使用详解(混淆电路)

    前期说明 Obliv C是一款GCC包装器 其作者在C语言的基础上对其进行了一定的类C处理 添加了一些规则限制 用于模拟实现混淆电路 Obliv C不需要手动混淆 只需要调用其中的函数便可实现混淆电路 其不涉及真实硬件电路仿真 即无法导出函
  • 安卓期末考试

    考点 第二章 第三章 核心点 第二章最后讲了一个线程 必须要会 第四章了解 第五第六第七了解 第九章三个存储 简单存储会写 文件存储 数据库存储 第十章不会考很多 核心也是线程 安卓 移动应用开发 考试 选择题 Logcat e error
  • ElasticSearch第二十讲 Elasticsearch的优势和应用场景

    Elasticsearch简介 Elasticsearch 是一个开源的分布式搜索和分析引擎 构建在 Apache Lucene 基础之上 它提供了一个快速 可扩展和具有强大查询功能的分布式搜索解决方案 Elasticsearch 被广泛应
  • javascript中with的用法

    关键字with 任何对象都可以使用with 通过使用with可以减少写一点代码 使用方法如下 1 语法 with object jsvascript代码 参数 一个对象 必须是一个对象 假设我们传入了一个obj对象 用法 花括号中的 jsv
  • 软件测试学习记录

    1 软件测试的定义 使用技术的手段验证软件是否满足需求 2 软件测试分类 按阶段分类 单元测试 针对源代码进行测试 集成测试 针对接口进行测试 系统测试 针对功能和非功能进行测试 验收测试 内测 公测 按代码可见度划分 黑盒测试 不关注源代
  • 北斗+车载录像机:“两客一危”的黑匣子

    两客一危 是指从事旅游的包车 三类以上班线客车和运输危险化学品 烟花爆竹 民用爆炸物品的道路专用车辆 由于该类车辆的危险系数较高 事故概率也比普通车辆大 各地方地区已就此类车辆陆续出台相应政策 例如早在2011年湖南省交通运输厅明确指出 两
  • 复制代码如何处理前面的行号

    网上类似的例子很多 1 一个很懒的方法 2 文本编辑器中正则表达式替换 一 一种情况是行号后带 输入 0 9 或者输入 0 9 0 9 0 9 二 第二种情况是行号数字后带空格 用ultraEdit的替换功能 正则表达式 1 9 0 9 注
  • Debian10搭建bind9主服务器搭建

    文章目录 1 环境 2 任务描述 3 设置IP地址以及dns 4 安装bind9服务 5 修改配置文件 6 测试 7 易错总结 1 环境 IPaddress 192 168 1 1 netmask 255 255 255 0 getaway
  • 1.OpenGLES——FBO方式的离屏渲染

    参考 https blog csdn net u011371324 article details 78011211 书写本文的初衷是为了自我学习 出现背景 明确两个概念 窗口系统默认帧缓冲 应用程序帧缓冲 FBO frame buffer
  • leetcode 26. 删除有序数组中的重复项

    给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素 使每个元素 只出现一次 返回删除后数组的新长度 元素的 相对顺序 应该保持 一致 然后返回 nums 中唯一元素的个数 考虑 nums 的唯一元素的数量为 k 你需要做以