
【Lintcode】113. Remove Duplicates from Sorted List II
发布日期:2021-05-03 18:44:33
浏览次数:24
分类:技术文章
本文共 1187 字,大约阅读时间需要 3 分钟。
题目地址:
给定一个有序链表,要求删除其中出现多于一次的数字。
用前后双指针。前指针的作用是判断当前的数是否应该存在在最终答案里,如果应该,则加到答案链表的后面,否则前指针到duplicate的数字中的最后一个,即越过不应该存在在答案里的数,然后将其后面的数加进答案链表后面。代码如下:
public class Solution { /** * @param head: head is the head of the linked list * @return: head of the linked list */ public ListNode deleteDuplicates(ListNode head) { // write your code here ListNode dummy = new ListNode(0); ListNode prev = dummy, cur = head; while (cur != null) { // 如果cur之后是null或者cur的值等于其后的节点的值,那么说明cur应该加入最终结果; if (cur.next == null || cur.val != cur.next.val) { prev.next = cur; prev = prev.next; } else { // 否则就说明有了重复数字,则将cur越过所有重复数字,将重复数字后一个节点连到prev后面 while (cur.next != null && cur.val == cur.next.val) { cur = cur.next; } prev.next = cur.next; } // cur继续走一步,接着判断当前节点是否应该加入最终结果 cur = cur.next; } return dummy.next; }}class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。
发表评论
最新留言
很好
[***.229.124.182]2025年03月21日 12时25分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CC2640R2F学习笔记(6)——UART串口使用
2019-03-03
SHELL命令
2019-03-03
自然划分的3-4-5规则
2019-03-03
Latex中cases环境引入报错
2019-03-03
Latex排版的时候把图片放在指定位置
2019-03-03
4084: [Sdoi2015]双旋转字符串
2019-03-03
Nginx出现500 Internal Server Error 错误
2019-03-03
51nod 1526 分配笔名
2019-03-03
MySQL中drop、truncate和delete的区别?
2019-03-03
Mysql索引底层B+树的实现原理以及Innodb和Myisam引擎存储的区别
2019-03-03
09-01 Java语言基础(package、import)
2019-03-03
11-01 Java语言基础(Scanner类)
2019-03-03
Accessing Excel Spreadsheets via C++
2019-03-04
excel上传核心
2019-03-04
json.parse细节
2019-03-04
redis
2019-03-04
ReID基础 | ReID工程中的一些小trick
2019-03-04
OpenCV6边缘检测[Canny算法]
2019-03-04
Hadoop_Scala操作Hbase
2019-03-04
Scala_1.控制台打印,变量定义,函数定义
2019-03-04