题解 | #删除链表中重复的结点#

删除链表中重复的结点

http://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

/* public class ListNode { int val; ListNode next = null;

ListNode(int val) {
    this.val = val;
}

} */

//全网最差的解题代码,大家凑合看吧。 import java.util.ArrayList; import java.util.LinkedList; import java.util.List;

public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null) return null; if(pHead.next == null) return pHead;

	List<Integer> list = new LinkedList<>();
	List<Integer> list1 = new ArrayList<>();//存重复的值
	ListNode temp1 = pHead;
	ListNode temp2 = pHead;
	while(temp1 != null) {
		if(list.isEmpty()) {
			list.add(temp1.val);
			temp1 = temp1.next;
			continue;
		}
		
		if(list.contains(temp1.val)) {
			temp2.next = temp1.next;
			list1.add(temp1.val);
			temp1 = temp1.next;
		}else {
			list.add(temp1.val);
			temp2 = temp2.next;
			temp1 = temp1.next;
		}
		
	}
	
	temp1 = pHead;
	temp2 = pHead;
	while(temp1 != null) {
		if(temp1==pHead && temp2==pHead) {
			if(list1.contains(temp1.val)) {
				pHead = pHead.next;
                temp1 = temp1.next;
				temp2 = temp2.next;
				continue;
			}else {
				temp1 = temp1.next;
			}
		}
		
        if(temp1 == null) break;
		if(list1.contains(temp1.val)) {
			temp2.next = temp1.next;
			temp1 = temp1.next;
		}else {
			temp2 = temp2.next;
			temp1 = temp1.next;
		}
	}
	
	return pHead;
}

}

全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务