劍指offer源**
題目二:刪除鍊錶中重複的節點
給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。
返回刪除後的鍊錶的頭節點。
注意:此題對比原題有改動
示例 1:
輸入: head = [4,5,1,9], val = 5
輸出: [4,1,9]
解釋: 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.
示例 2:
輸入: head = [4,5,1,9], val = 1
輸出: [4,5,9]
解釋: 給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.
解法一:單指標掃瞄法
思路:
**實現:
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
while
(cur-
>next && cur-
>next-
>val != val)
if(cur-
>next && cur-
>next-
>val == val)
return head;}}
;
解法二:遞迴法
思路:
注意刪除後,剩餘的鍊錶要再次拼接到head的後面。
**實現:
class
solution
};
struct listnode
;// 基於乙個假設:要刪除的節點在鍊錶中
void
deletenode
(listnode *
* plisthead, listnode * ptobedeleted)
// 鍊錶只有乙個節點
elseif(
*plisthead == ptobedeleted)
// 鍊錶中有多個節點,刪除尾節點
else
// pnext->m_pnext = nullptr;
delete ptobedeleted;
ptobedeleted =
nullptr;}
}
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5
示例1
輸入
返回值
**實現:
/*
struct listnode
};*/
class
solution
else
}return root-
>next;}}
;
劍指offer 刪除鍊錶的節點
給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。思路 單指標,找到需要刪除的節點的前乙個節點即可。definition for singly linked list.public class listnode class solution if head...
劍指Offer 刪除鍊錶的節點
劍指offer 刪除鍊錶的節點 題目要求 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。解題思路 單鏈表刪除節點,直接將當前節點的指標指向下乙個節點的next即可 因為該題是查詢節點中的值是否等於給定值,並且找到之後無法向前找節點 在確認是否是要刪除的...
劍指offer 刪除鍊錶的節點
給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。1 struct listnode 1 void deletenode listnode plisthead,listnode ptobedeleted 2if plistnode ptobedeleted 56 if pt...