JAVA移除链表的重复节点
方法一:
遍历所有节点,用当前节点与之前所有节点比较,有重复的就跳过,没重复的就继续
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if(head==null){
return head;
}
ListNode current=head;
int count=1;
while(current.next!=null){
if(check(current.next.val,count,head)==true){
current.next=current.next.next;
}
else{
current=current.next;
count++;
}
}
return head;
}
public boolean check(int val,int count,ListNode node){
for(int i=0;i<count;i++){
if(node.val==val){
return true;
}
else{
node=node.next;
}
}
return false;
}
}
方法二:
使用哈希缓存去除重复的元素
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
if(head==null) return head;
HashSet<Integer> set=new HashSet<>();
ListNode current=head;
set.add(current.val);
while(current.next!=null){
if(set.contains(current.next.val)){
current.next=current.next.next;
}
else{
set.add(current.next.val);
current=current.next;
}
}
return head;
}
}
有什么不好的地方希望大家指正。😁