【刷题记录】26. 删除有序数组中的重复项

简介: 【刷题记录】26. 删除有序数组中的重复项

一、题目描述


来源:力扣(LeetCode)


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


提示:


  • 0 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums 已按 升序


二、思路分析


双指针


因为数组是升序有序的,所以相同重复的数字都是挨着的。


  • 我们定义两个指针 :
  • i 用来遍历数组
  • j 用来记录不重复数组在修改后数组的位置
  • 初始化 j = 0 num[j] = num[0];
  • 当num[i] != num [j] 时候 ,记录不重读数字


三、代码实现

class Solution {
    public int removeDuplicates(int[] nums) {
        int length = nums.length;
        int j =0;
for (int i =0; i < length; i++) {
if (nums[i] != nums[j]) {
                nums[++j] = nums[i];
            }
        }
        return j +1;
    }
}

复杂度分析


  • 时间复杂度:
    网络异常,图片无法展示
    |
    ,其中 n 是数组的长度
  • 空间复杂度:
    网络异常,图片无法展示
    |


运行结果


网络异常,图片无法展示
|


总结


这个道题理解起来很简单直接。只要在于要求在原数组上进行修改,记录修改后的数组,所以我们双指针记录不同的信息来实现。


继续加油~~

目录
相关文章
|
存储 缓存 应用服务中间件
No53.精选前端面试题,享受每天的挑战和学习
No53.精选前端面试题,享受每天的挑战和学习
|
安全 云栖大会 云计算
阿里云创业者计划:数字化时代的创新助推器
阿里云创业者计划助力初创企业数字化转型,提供最高100万上云抵扣金,1对1技术服务,及品牌曝光等综合支持。通过降低上云成本与技术指导,该计划旨在帮助企业在竞争中站稳脚跟,促进创新与行业发展。尽管面临审核流程及技术利用的挑战,该计划仍为创业创新提供了关键推动力。
495 4
阿里云创业者计划:数字化时代的创新助推器
|
弹性计算 安全 数据安全/隐私保护
2024年阿里云幻兽帕鲁Palworld联机服务器搭建部署指南,图文教程
近年来,幻兽帕鲁以其独特的游戏魅力,迅速成为玩家们的热门选择。对于许多想要与好友一起体验这款游戏的玩家来说,如何搭建一个稳定的联机服务器成为了他们关注的焦点。今天,我将为大家带来一篇简单易懂的图文教程,让你轻松搭建幻兽帕鲁的联机服务器,与好友们畅快游戏。
|
12月前
|
前端开发
在react中使用wangEditor3
在react中使用wangEditor3
170 15
|
12月前
|
存储 移动开发 API
HTML5的新特性
HTML5引入了众多新特性和增强功能,简化并强化了网页开发。新增结构元素如`&lt;header&gt;`、`&lt;footer&gt;`、`&lt;article&gt;`等使页面布局更清晰;表单增强支持更多输入类型及属性;内置音频视频播放无需插件;`&lt;canvas&gt;`与SVG支持提升了图形处理能力;Geolocation API和Web存储改善了用户体验;离线应用、拖放功能及Web Workers则进一步提升了网页应用的实用性和交互性。HTML5令网页开发更为现代化,为开发者提供了丰富的工具集。
|
自然语言处理 数据处理 知识图谱
PaddleNLP UIE 实体关系抽取 -- 抽取药品说明书(名称、规格、用法、用量)【废弃】
PaddleNLP UIE 实体关系抽取 -- 抽取药品说明书(名称、规格、用法、用量)【废弃】
188 1
|
Java 持续交付 Maven
云效产品使用常见问题之流水线的容器读取本地的挂载文件失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
机器学习/深度学习 安全 网络安全
网络安全与信息安全:防御前沿的技术与策略
【4月更文挑战第4天】在数字化时代,数据成为了新的货币,而网络安全则是保护这种“货币”不被盗窃的关键。本文将深入探讨网络安全漏洞的概念、加密技术的最新进展以及提升个人和企业安全意识的策略。我们将分析当前网络威胁的面貌,探索如何通过多层次的防护手段来构建坚固的信息防线,并强调教育与培训在维护网络安全中的核心作用。
|
关系型数据库 MySQL 测试技术
mysql ibd文件特别大的问题
mysql ibd文件特别大的问题
468 0
|
开发框架 安全 AliOS-Things
AliOS-Things 构建系统的介绍|学习笔记
快速学习 AliOS-Things 构建系统的介绍。
571 0
AliOS-Things 构建系统的介绍|学习笔记

热门文章

最新文章