演算法之刪除鍊錶的重複的節點並返回頭指標

2022-09-22 04:18:10 字數 1684 閱讀 5505

分析和思路:使用map儲存每個節點的個數,大於1的個數鍊錶不建立,其他的重新建立,這個方法的缺點是用了o(n)的空間。

1/*2

struct listnode 8};

9*/10 #include "

iostream

"11 #include 12

using

namespace

std;

13//

思路,先遍歷整個鍊錶,如果重複數量大於 1的都記錄下來,然後再建立乙個新的鍊錶返回即可

1415

1617

1819

class

solution

27 listnode* temp =null;

28 temp =phead;

29while (temp !=null)

3034

35 listnode* pheadback =phead;

36 temp =phead;

37while (temp!=null&&m[temp->val] > 1)38

41if(temp==null)

4245 pheadback =temp;

46 phead =temp;

47 temp = temp->next;

48 listnode*new;

49while (temp !=null)

5056

else

5767}68

return

pheadback;

6970

}71 };

之前寫的乙個不用o(n)空間的,寫的比較冗餘,可讀性比較差。

1/*2

struct listnode 8};

9*/1011

class

solution

19bool flag = false

;20 listnode* q =phead;

21bool find_flag = false

;22 listnode* back = (listnode*)malloc(sizeof

(listnode));

2324

25if( phead->next!=null)

263435}

36else

3740

41while(q->next!=null)

4250

51if (q->val != q->next->val)

5258

else

5964

65 find_flag = true;66

//free(q) 釋放節點

67continue;68

}69}70

if (flag == true)71

79else

80return phead->next;81}

82else

838687}

88 };

鍊錶演算法 刪除重複節點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 public class listnode public listnode deleteduplication listnode phead l...

刪除鍊錶的重複節點

思路 就是找到不重複出現的節點,然後連線到新鍊錶上面 反思 在連線節點到新鍊錶的時候,每次都要把尾部節點的next指標設定為空!以防當前尾部節點真的是最後乙個節點卻沒給next設定指標域為空 struct listnode class solution listnode temp pnode 此時指...

鍊錶的重複節點刪除

題目一 力扣83 刪除重複的節點 保留重複的節點 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 解法1 使用set去重,思路很簡單。時間複雜度o n 空間複雜度o n public sta...