【題目】
給定乙個無序單鏈表的頭結點head,刪除其中值重複出現的節點。
例如:1->2->3->3->4->4->2->1->1->null,刪除重複的節點之後為1->2->3->4->null。
【要求】
方法1:時間複雜度o(n)
方法2:額外空間複雜度o(1)
【**】
//刪除無序單鏈表中值重複出現的節點
//方法1:時間複雜度o(n),額外空間複雜度o(n)
public
static
void
removerep1(node head)
hashseths=new hashset();
node pre=head;
node cur=head.next;
hs.add(cur.value);//頭結點直接加到鍊錶
while(cur!=null)
else
cur=cur.next;
}
}//方法2:時間複雜度o(n^2),額外空間複雜度o(1)
public
static
void
removerep2(node head)
node cur=head;
node pre=null;
node next=null;
//類似選擇排序,選中乙個節點,挨個比較後面是否有重複的節點,有則刪除
while(cur!=null)
else
next=next.next;}}
}
【另外一種解法-遞迴思想】
public listnode deleteduplication(listnode phead)
if (phead.val == phead.next.val)
return deleteduplication(pnode); // 從第乙個與當前結點不同的結點開始遞迴
} else
}
刪除無序單鏈表中值重複出現的節點
題目 給定乙個無序單鏈表的頭節點head,刪除其中值重複出現的節點。例如 1 2 3 3 4 4 2 1 1 null,刪除值重複重複的節點之後為1 2 3 4 null。請按以下要求實現兩種方法 方法1 如果鍊錶長度為n,時間複雜度達到o n 方法2 額外空間複雜度為o 1 public clas...
190507打卡 刪除無序單鏈表中值重複出現的節點
題目描述 給定乙個無序單鏈表的頭結點head,刪除其中值重複出現的節點。例如 1 2 3 3 4 4 2 1 1 null,刪除值重複出現的節點後為 1 2 3 4 null。要求 額外空間複雜度為o 1 思路 類似於選擇排序的過程,時間複雜度為o n n 額外空間複雜度為o 1 首先是頭結點,值為...
刪除有序鍊錶中重複出現的元素
給出乙個公升序排序的鍊錶,刪除鍊錶中的所有重複出現的元素,只保留原煉表中只出現一次的元素。例如 給出的鍊錶為1 2 3 3 4 4 5,返回1 2 5.給出的鍊錶為1 1 1 2 3,返回2 3.struct listnode class solution listnode phead new li...