劍指offer56 刪除鍊錶中重複的結點 題解

2022-07-26 12:51:09 字數 716 閱讀 2740

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

演算法流程:

初始化輔助頭節點 \(dummy\) 指向實際頭節點 \(phead\),設定結點 \(pre\) 指向 \(dummy\),結點 \(cur\) 指向 \(phead\)

當 \(cur\) 不為空時

如果 \(cur->next\) 不為空且 \(cur\) 和 \(cur->next\) 的結點值相等,則說明結點重複。

\(cur\) 指標進入迴圈繼續前進,直到 \(cur\) 和 \(cur->next\) 的結點值不相等退出迴圈

此時 \(cur\) 指向的是最後乙個重複值, 需要讓 \(cur\) 再往前前進一步,指向第乙個不重複的值,並調整 \(pre\) 指標的 \(next\) 指向第乙個不重複的值

否則調整 \(pre\)指標為 \(cur\),\(cur\) 指標再前進一步

/*

1.時間複雜度:o(n)

2.空間複雜度:o(1)

*/class solution

cur = cur->next;

pre->next = cur;

}else

}return dummy->next;

}};

劍指offer56 刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 注意是把重複的刪除,不是刪掉重複的 coding utf 8 class listnode def init self,x self.val x...

劍指offer56 刪除鍊錶中的重複結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路1 用乙個set來記錄重複的結點 class solution listnode new phead newlistnode 1 這個操作主...

劍指offer56 刪除鍊錶中重複的節點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 注意如果是頭結點的判斷 另外,每次 next的時候都需要判斷當前節點是否為空 struct listnode class solution 如果...