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.
思路:
这是一个比较简单的操作链表的题目。基本操作,没什么值得特别注意的。因为是删除链表中相同的元素,那么头元素肯定不会被删除。可以不用设置
一个空的头节点dummy,不过设置一个也没有关系。后面就是使用双指针做,指针pre指向当前不重复元素中的最后一个元素,cur指向待比较元素。如果pre与cur的指向的节点值相同,那么pre.next = cur.next。如果不相同,pre = cur。最后不管是否相同,cur都要向继续向后走,cur = cur.next。
public class RemoveDuplicatesFromSortedList { public ListNode deleteDuplicates(ListNode head) { if(head == null) return null; ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy.next; ListNode cur = pre.next; while(cur != null) { if(pre.val == cur.val) { pre.next = cur.next; } else { pre = cur; } cur = cur.next; } return dummy.next; } }