码迷,mamicode.com
首页 > 编程语言 > 详细

删除排序链表中的重复数字 II

时间:2016-07-13 16:47:27      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

题目

给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例
给出 1->2->3->3->4->4->5->null,返回 1->2->5->null

给出 1->1->1->2->3->null,返回 2->3->null

解题

记录相同个数
一个相同的保存,多个的跳过

/**
 * Definition for ListNode
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param ListNode head is the head of the linked list
     * @return: ListNode head of the linked list
     */
    public static ListNode deleteDuplicates(ListNode head) {
        // write your code here
        ListNode newHead = new ListNode(0);
        if(head ==null || head.next ==null)
            return head;
        ListNode cur = newHead;
        ListNode prev = head;
        while(head!=null){
            ListNode  p = head;
            int count = 0;// 记录相同结点的个数
            while(p!=null && p.val == head.val){
                p = p.next;
                count++;
            }
            if(count==1){ // 1 说明就一个
                cur.next = head;
                cur = cur.next;
                head = head.next;
            }else
                head = p;
        }
        cur.next =null;// 断开后面的结点
        return  newHead.next;
    }
}

删除排序链表中的重复数字 II

标签:

原文地址:http://blog.csdn.net/qunxingvip/article/details/51892388

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!