6

#yyds干货盘点# LeetCode程序员面试金典:移除重复节点

 1 year ago
source link: https://blog.51cto.com/u_13321676/5916448
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

#yyds干货盘点# LeetCode程序员面试金典:移除重复节点

精选 原创

灰太狼_cxh 2022-12-06 18:16:49 博主文章分类:leetcode ©著作权

文章标签 编写代码 删除节点 链表 文章分类 Java 编程语言 阅读数236

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

输入:[1, 2, 3, 3, 2, 1]

输出:[1, 2, 3]

输入:[1, 1, 1, 1, 2]

输出:[1, 2]

代码实现:

class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if (head == null) {
return head;
}
Set<Integer> occurred = new HashSet<Integer>();
occurred.add(head.val);
ListNode pos = head;
// 枚举前驱节点
while (pos.next != null) {
// 当前待删除节点
ListNode cur = pos.next;
if (occurred.add(cur.val)) {
pos = pos.next;
} else {
pos.next = pos.next.next;
}
}
pos.next = null;
return head;
}
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK