题目描述

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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


给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

解题思路

采用双指针方式处理。

  1. 初始指针 i, j 位置为 0
  2. 指针 j 先向右移动
  3. 比较指针 i,j 元素是否相同,若指针i,j元素相同则指针 j 继续向右移动;反之将指针 j 元素复制到指针 i + 1 处元素
  4. 当指针 j 移动到数组末尾时则停止

其流程如下图所示:

实现

public static int solution (int[] nums) {int i = 0, j = 0;while (true) {// 指针 j 向右移动j++;// 指针 j 移动到数组末尾则退出,说明数组元素都判断了去重if (j >= nums.length) {break;}if (nums[j] == nums[i]) {// 指针 i, j 元素相同,说明重复元素;// 指针 j 继续向右移动continue;} else {// 指针 i, j 元素不相同;则将指针 j 元素复制到 指针 i 后一位,这样就保证指针 i 后元素不重复nums[i + 1] = nums[j];// 指针 i 向右移动,继续处理i++;}}return i + 1;
}

LeetCode-数组-删除有序数组重复元素相关推荐

  1. LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++

    目录 题目 删除有序数组中的重复项 参考答案 题目 删除有序数组中的重复项|| 参考答案 题目 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ...

  2. 14. Leetcode 80. 删除有序数组中的重复项 II (数组-同向双指针-快慢指针)

    给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条 ...

  3. 8. Leetcode 26. 删除有序数组中的重复项 (数组-同向双指针-快慢指针)

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

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

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

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

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

  6. leetcode 80. 删除有序数组中的重复项 II

    给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的 ...

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

    https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 解决方案 class Solution {public in ...

  8. 【数据结构与算法】之深入解析“删除有序数组中的重复项”与“移除元素”的求解思路与算法示例

    删除有序数组中的重复项 一.题目要求 给你一个升序排列的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度.元素的相对顺序应该保持 一致 . 由于在某些语言中不 ...

  9. 力扣 26.删除有序数组中的重复元素

    文章目录 题目 思路 AC代码 收获 题目 删除有序数组中的重复元素 思路 快慢指针.快指针不断向前走.判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等, ...

  10. 力扣——删除有序数组中的重复项

    删除有序数组中的重复项 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 ...

最新文章

  1. 安卓2.2系统上网设置
  2. IOS XCode11开发嵌入网页
  3. onuninitialized和ajax,12.3 Prototype对Ajax的支持
  4. Linux的shell编程
  5. 平均要取多少个(0,1)中的随机数才能让和超过1
  6. 五、Docker+Sqlserver
  7. linux中文件查找命令
  8. SAP 创始人:打造“一连串的应用程序”
  9. E - 确定比赛名次(拓补排序)
  10. java7安装教程_JAVA JDK7安装和配置 JAVA JDK7安装配置教程
  11. R语言:医药股票数据分析
  12. 软件测试中期答辩,中期答辩材料创新张颖
  13. 【Beyond Compare】秘钥到期解决方法
  14. 释放docker日志所占空间
  15. jupyter添加快捷方式
  16. ios自己搭建服务器证书,iOS一步一步实现Https自建证书校验
  17. 金庸小说中的农业漏洞[ZT]
  18. 计算机桌面分区,明基XL2430T如何使用桌面分区?
  19. Linux下的FTP安装和登录
  20. redis搭建三主三从架构

热门文章

  1. pytorch 获取模型参数_剑指TensorFlow,PyTorch Hub官方模型库一行代码复现主流模型...
  2. matlab 冒号操作符
  3. FPGA之道(83)功能仿真之仿真语法(Graphic Waveform )
  4. 用css动画写一个下红包雨的效果
  5. innodb表 手工导入导出
  6. Nginx服务优化——性能与安全
  7. 脉讯发布“社群搜索工具” 助企业精准洞察消费者需求
  8. centos7安装redis3.2.5
  9. 使用lucene进行group操作
  10. 获得html元素自身的宽度