劍指 Offer 18. 刪除連結串列的節點
阿新 • • 發佈:2020-08-16
描述
給定單向連結串列的頭指標和一個要刪除的節點的值,定義一個函式刪除該節點。
返回刪除後的連結串列的頭節點。
tags: recursive
, double pointer
思路
- 遞迴
class Solution { public: ListNode* deleteNode(ListNode* head, int val) { if(head == NULL){ return head; } if(head->val == val){ return head->next; // val unique } head->next = deleteNode(head->next, val); return head; } };
- 遍歷
利用val node 唯一的性質
class Solution { public: ListNode* deleteNode(ListNode* head, int val) { if(!head) return head; if(head->val == val) return head->next; ListNode* node = head; // find next.val == val while(node->next && node->next->val != val){ node = node->next; } // shortcut val node if(node) node->next = node->next->next; return head; } };