【leetcode】82.(Medium)Remove Duplicates from Sorted List II

解题思路:
这道题就是首先建立一个newHead,然后遍历传进来的head的值,如果有重复的就跳过,否则就加到newHead的后面。最后返回newHead->next即可

此外这道题后面有个Solution还蛮好的。
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/discuss/28335/My-accepted-Java-code

public ListNode deleteDuplicates(ListNode head) {
        if(head==null) return null;
        ListNode FakeHead=new ListNode(0);
        FakeHead.next=head;
        ListNode pre=FakeHead;
        ListNode cur=head;
        while(cur!=null){
            while(cur.next!=null&&cur.val==cur.next.val){
                cur=cur.next;
            }
            if(pre.next==cur){   //核心代码
                pre=pre.next;    //核心代码
            }                    //核心代码
            else{                //核心代码
                pre.next=cur.next;  //核心代码
            }
            cur=cur.next;
        }
        return FakeHead.next;
    }

提交代码:

class Solution {
	public ListNode deleteDuplicates(ListNode head) {
		if (head == null || head.next == null)
			return head;

		ListNode newHead=new ListNode(-1);
		newHead.next=null;
		
		boolean flag=true;
		ListNode p=head,pTmp=head,phead=newHead;
		while(p!=null) {
			pTmp=p;p=p.next;
			while(p!=null&&p.val==pTmp.val) {
				flag=false;p=p.next;
			}
			if(flag) {
				phead.next=pTmp;
				phead=phead.next;
				phead.next=null;
			}
			flag=true;
		}
		
		return newHead.next;
	}
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/84430298