首页 > 代码库 > Remove Duplicates from Sorted List

Remove Duplicates from Sorted List

https://oj.leetcode.com/problems/remove-duplicates-from-sorted-list/

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.

/** * 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) {        ListNode new_head = head;        while(head != null && head.next != null){            if(head.val == head.next.val){                if(head.next.next != null){                    head.next = head.next.next;                }else{                    head.next = null;                }            }            if(head.next != null && head.val != head.next.val){                head = head.next;            }        }        return new_head;    }}

解题思路:

如果后面节点的value和当前节点一样,就把head.next置为下下个节点。如果value和当前节点不同,就看后面一个节点,如此往复。但需要一个引用,永远指向head,以作返回。

上面代码有冗余,下面代码为同样思想。

public class Solution {        public ListNode deleteDuplicates(ListNode head) {            if(head==null||head.next==null)                return head;            ListNode node=head;            ListNode nextNode=null;            while(node.next!=null)            {                nextNode=node.next;                if(node.val==nextNode.val)                    node.next=nextNode.next;                else                    node=node.next;            }            return head;        }    }

 

Remove Duplicates from Sorted List