面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
提示:
- 链表长度在[0, 20000]范围内。
- 链表元素在[0, 20000]范围内。
简单,看代码把:
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if(head == null)
return head;
int[] flag = new int[20001];
ListNode p = head;flag[p.val] = 1;
while(p!=null&&p.next!=null){
if(flag[p.next.val]==0){
flag[p.next.val] = 1;
p = p.next;
continue;
}
p.next = p.next.next;
}
return head;
}
}
标记数组标记下当前节点的下一个节点值是不是已经存在。不存在,该值的标记记为1表示存在;存在,让下一个节点的下一个节点成为当前节点的下一个节点。