83. Remove Duplicates from Sorted List && 82. Remove Duplicates from Sorted List II

来源:互联网 发布:微信商城网站源码php 编辑:程序博客网 时间:2024/06/05 19:06

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.

  public ListNode deleteDuplicates(ListNode head) {       if(head == null || head.next == null)            return head;       ListNode p = head,q = head.next;     //p记录无重复的链表,q记录处理的下一个节点        while(q != null){            if(p.val != q.val){  //没有重复                p.next = q;                p = q;            }            q = q.next;        }        p.next = q;        return head;    }

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

 public ListNode deleteDuplicates(ListNode head) {        if(head == null) return head;        ListNode fakehead = new ListNode(0), cur = head,pre = fakehead;        fakehead.next = head;        while(cur != null && cur.next != null){               if(cur.next.val == cur.val){                  //去重复                ListNode t = cur.next.next;                while(t != null && t.val == cur.val){                    t = t.next;                }                cur = t;            }            else{                                    //没有重复                pre.next = cur;                pre = cur;                cur = cur.next;            }        }        pre.next = cur;        return fakehead.next;    }
0 0
原创粉丝点击