leetcode_82_Remove Duplicates from Sorted List II

描述:

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 p=head,q,t=head;
		boolean flag=false;
		if(p.next!=null&&p.val==p.next.val)
		{
			flag=true;
			t=head;
		}
		while (p.next!=null)
		{
			q=p;
			if(q.val==p.next.val)
			{
				while(p.next!=null&&q.val==p.next.val)
					p=p.next;
				t.next=p.next;
				if(t.next!=null)
					p=t.next;
				else
					break;
			}
			else {
				t=p;
				p=p.next;
			}
			
		}
		if(flag&&head!=null)
			head=head.next;
		return head;
    }


结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值