刪除無序單鏈表中值重複出現的節點

2021-08-19 00:22:28 字數 1120 閱讀 7697

【題目】

給定乙個無序單鏈表的頭結點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...