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

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

示例 1:
给定数组 nums = [1,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。
你不需要考虑数组中超出新长度后面的元素。

思路:
双指针法:
使用两个指针 p , q, p在前,q在后。在遍历数组nums的时候,先判空,再比较两个指针所指向元素的值是否相等
1.如果q 和 q 相等,则 q++, 往后移一位
2.如果q 和 q 不相等,则 nums[q]的值 赋给 nums[q+1]
然后 p++;
3.重复上述过程 ,直到q 等于数组长度,最后返回数组长度 p + 1

Java代码实现:

class Solution {public int removeDuplicates(int[] nums) {if(nums == null || nums.length == 0) return 0;int p = 0;    int q = 1;while(q < nums.length){if(nums[p] != nums[q]){nums[p + 1] = nums[q];   //赋值p++;}else{q++;}}return p + 1;}
}

数组-删除排序数组中的重复项(双指针法)相关推荐

  1. 每日一题——删除排序链表中的重复项 II

    菜鸡每日一题系列打卡82天 每天一道算法题目 小伙伴们一起留言打卡 坚持就是胜利,我们一起努力! 题目描述(引自LeetCode) 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重 ...

  2. go数组去除重复_让我们一起啃算法----删除排序链表中的重复元素

    删除排序链表中的重复元素(Remove-Duplicates-From-Sorted-List) 题干: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1-> ...

  3. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  4. 算法---删除排序链表中的重复元素 II

    删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 输入:head = [1,2,3,3,4,4,5] ...

  5. LeetCode Algorithm 83. 删除排序链表中的重复元素

    83. 删除排序链表中的重复元素 Ideas 这题挺简单的,直接一次遍历,如果当前遍历的元素val跟下一个元素的val相等,说明是重复元素,直接把当前item的next指向item->next- ...

  6. 83. 删除排序链表中的重复元素 golang

    83. 删除排序链表中的重复元素 golang Me func deleteDuplicates(head *ListNode) *ListNode {if head == nil || head.N ...

  7. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. 【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】

    Leetcode Leetcode -61.旋转链表 Leetcode -82.删除排序链表中的重复元素Ⅱ Leetcode -61.旋转链表 题目:给你一个链表的头节点 head ,旋转链表,将链表 ...

  9. 删除排序链表中的重复元素 II

    82. 删除排序链表中的重复元素 II 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排 ...

  10. leetcode 82. 删除排序链表中的重复元素 II

    难度:中等 频次:77 题目:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 解题思路: 一次遍历 注意: 遍历时候,如果两个节点 ...

最新文章

  1. LG30刷小米系统_华为手机适合刷小米系统吗?
  2. Java实战系列之关于双十一秒杀架构模型的一点思考
  3. github可视化_Github上 10 个超好看可视化面板
  4. SAS安装后处理错误的解决方法
  5. java代码生成UUID以及在线UUID生成器
  6. 我的世界服务器地图软件制作教程,我的世界RPG地图制作教程 利用MC小助手进行制作...
  7. POJ 3744 Scout YYF I(矩阵快速幂优化+概率dp)
  8. Win32多语言IME应用程序编程接口(API)
  9. CS常用文件的安装 CS脚本参数查询 控制台常用参数查询
  10. 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
  11. 为什么要选择双线虚拟主机?
  12. Tiny210--3--基于Tiny210的CMOS摄像头图像采集
  13. 福特FORD EDI流程指南
  14. 计算机教育 专业知识,计算机教育
  15. 计算机与信息安全的基本知识,信息安全的基本常识
  16. 深漂中年程序员回忆录-南下找工作(二)
  17. 2022微信支付v3 - Native
  18. 散列:排解冲突(1)
  19. 计算机绘图千斤顶,AUTO CAD课程设计实验报告.doc
  20. 二、Oracle数据库的创建—通用

热门文章

  1. oracle解析xml字符串命名空间,XML命名空间
  2. java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
  3. pinpoint zipink skywalking
  4. python时间处理模块 datetime time模块 deltetime模块
  5. CSS3透明属性opacity
  6. SQL Server 判断数据库是否存在,表是否存在
  7. 还在为cximage编译问题而发愁吗?
  8. 基于Linux(LAMP)平台搭建MYsql数据库(二)
  9. 漫画:如何用 K8s 实现 CI/CD 发布流程?
  10. 来给你代码加上美颜吧!