删除重复值的结点
问题重述:
给定一个无序单链表的头节点head,删除其中值重复出现的结点
问题分析:
这道题要删除重复值的结点,我们可以想到哈希表,因为哈希表是无序不重复的,我们使用哈希表对值进行保存,后续加入的值如果已经在哈希表中存在了,就删除,否则就加入哈希表
解法:
哈希表,或者多次遍历
解题:
代码:
public static Node deleteRepeatNode1(Node head) {
if(head == null) {
return head;
}
HashSet set = new HashSet();
Node pre = head;
Node cur = head.next;
set.add(head.value);
while(cur != null) {
if(set.contains(cur.value)) {
pre.next = cur.next;
}else {
set.add(cur.value);
pre = cur;
}
cur = cur.next;
}
return head;
}
public static Node deleteRepeatNode2(Node head) {
if(head == null) {
return head;
}
Node pre = null;
Node cur = head;
Node next = null;
while(cur != null) {
pre = cur;
next = cur.next;
while(next != null) {
if(cur.value == next.value) {
pre.next = next.next;
}else {
pre = next;
}
next = next.next;
}
cur = cur.next;
}
return null;
}
总结:
遇见重复的问题,我们就可以考虑使用哈希表
Original: https://www.cnblogs.com/foldn/p/15918715.html
Author: foldn
Title: 删除重复值的结点
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579762/
转载文章受原作者版权保护。转载请注明原作者出处!