LeetCode83. Remove Duplicates from Sorted List

来源:互联网 发布:数控铣床手工编程 编辑:程序博客网 时间:2024/06/10 20:17

83.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.

想法: 一开始想的用 i、j 分别指向链表的前后元素,就像LeetCode26:移除数组中的重复元素一样,结果这种方法是不对的,因为链表本身自带指针,用一个就可以,而且最后返回的还是head。

public class DeleteDuplicates_83 {    class ListNode {         int val;         ListNode next;         ListNode(int x) { val = x; }    }    public ListNode deleteDuplicates(ListNode head) {                ListNode i = head;              while(i.next != null && i != null){                                     if(i.val == i.next.val){                                    i.next = i.next.next;                                   }             else{                 i = i.next;             }         }         return head;           }    //方法2 递归    public ListNode deleteDuplicates1(ListNode head) {        if(head == null || head.next == null)return head;        head.next = deleteDuplicates(head.next);        return head.val == head.next.val ? head.next : head;    }}