面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
哈希表
import java.util.HashSet;
import java.util.Set;
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if (head == null) {
return null;
}
Set<Integer> cache = new HashSet<>();
ListNode cur = head, pre = null, next;
while (cur != null) {
next = cur.next;
if (cache.contains(cur.val)) {
pre.next = next;
} else {
pre = cur;
}
cache.add(cur.val);
cur = next;
}
return head;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
双重循环
import java.util.Set;
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if (head == null) {
return null;
}
ListNode cur = head;
while (cur != null) {
ListNode node = cur.next;
ListNode pre = cur;
while (node != null) {
if (node.val == cur.val) {
pre.next = node.next;
} else {
pre = node;
}
node = node.next;
}
cur = cur.next;
}
return head;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号