LeetCode Remove Duplicates from Sorted List II
2015-09-02 12:25
232 查看
原题链接在这里:https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
本题与Remove Duplicates from Sorted List相似,不同就是要完全去掉duplicate. 所以要维护一个前指针,
当cur.val == cur.next.val 时,就一直移动cur直到不同,然后pre的next指向cur.next即可。
当不同时就向后移动pre和cur。
Note:1. 移动一段时间后,要注意cur.next == null的特殊情况,需特殊考虑。
2. 建立一个dummy head, 是为了简化需更改表头的例子。
Time Complexity: O(n), Space O(1).
AC Java:
本题与Remove Duplicates from Sorted List相似,不同就是要完全去掉duplicate. 所以要维护一个前指针,
当cur.val == cur.next.val 时,就一直移动cur直到不同,然后pre的next指向cur.next即可。
当不同时就向后移动pre和cur。
Note:1. 移动一段时间后,要注意cur.next == null的特殊情况,需特殊考虑。
2. 建立一个dummy head, 是为了简化需更改表头的例子。
Time Complexity: O(n), Space O(1).
AC Java:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null){ return head; } ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy; ListNode cur = head; while(cur.next != null){ if(cur.val == cur.next.val){ while(cur.next != null && cur.val == cur.next.val){ cur = cur.next; } if(cur.next == null){ pre.next = cur.next; }else{ pre.next = cur.next; cur = pre.next; } }else{ pre = pre.next; cur = cur.next; } } return dummy.next; } }
相关文章推荐
- 项目中用到的git小版本号管理
- Qt事件处理(五)
- Qt事件处理(四)
- 树莓派 一些好资源
- hortonworks管理
- mysql 启动错误1026
- SET NAMES UTF8
- keep fighting
- OpenCV坐标体系介绍以及像素点at操作讲解
- zzuli OJ 1085: 求奇数的乘积(多实例测试)
- Qt事件处理(三)
- max_element和min_element的用法
- expdp和impdp导入导出工具的使用
- Qt事件处理(二)
- Qt事件处理(一)
- 希尔排序(K&RC)
- http协议
- dubbo-admin部署
- jquery实现可关闭的倒计时广告特效代码
- MaterialRangeSlider双向拖动seekbar