Leetcode: Remove Duplicates from Sorted List
2014-05-03 05:56
246 查看
Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.
遇到的问题:input{1,1,1}, output{1,1}, expected{1}, 原因在于若temp.val==temp.next.val, 则需要temp.next=temp.next.next, 这时候就不要temp=temp.next了
注意停止条件不是temp!=null,而是temp.next!=null
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head==null) return null; ListNode temp=head; while(temp.next!=null){ if(temp.val==temp.next.val){ temp.next=temp.next.next; } else temp=temp.next; } return head; } }
维护两个指针,一个指向当前不重复的最后一个元素,一个进行依次扫描,遇到不重复的则更新第一个指针,继续扫描,否则就把前面指针指向当前元素的下一个(即把当前元素从链表中删除)。时间上只需要一次扫描,所以是O(n),空间上两个额外指针,是O(1)。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) return head; ListNode walker = head; ListNode runner = head.next; while (walker != null && runner != null) { if (walker.val == runner.val) { walker.next = runner.next; runner = runner.next; } else { walker = walker.next; runner = runner.next; } } return head; } }
相关文章推荐
- LeetCode之Remove Duplicates from Sorted List
- Leetcode: Remove Duplicates from Sorted List II
- leetcode -- Remove Duplicates from Sorted List -- 很简单
- Remove Duplicates from Sorted List II leetcode java
- leetcode之Remove Duplicates from Sorted List
- Leetcode Remove Duplicates from Sorted List 删除链表中的重复元素
- LeetCode小白菜笔记[20]:Remove Duplicates from Sorted List
- LeetCode: Remove Duplicates from Sorted List
- Leetcode -- Remove Duplicates from Sorted List II
- LeetCode[Linked List]: Remove Duplicates from Sorted List II
- leetcode-Remove Duplicates from Sorted List II-82
- 【leetcode c++】82 Remove Duplicates from Sorted List II
- leetcode-Remove Duplicates from Sorted List II
- LeetCode – Remove Duplicates from Sorted List II (Java)
- LeetCode 83 Remove Duplicates from Sorted List(链表操作)
- LeetCode 83 Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List 解题报告
- Leetcode Remove Duplicates from Sorted List
- Leetcode Remove Duplicates from Sorted List II
- Leetcode-83: Remove Duplicates from Sorted List