一. 問(wèn)題
原題引自203. 移除鏈表元素
刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn)。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
二. 思路
- 通過(guò) 遞歸/迭代 遍歷鏈表。
三. 解決
- 迭代
public ListNode removeElements(ListNode head, int val) {
ListNode result = new ListNode(-1);
result.next = head;
ListNode node = result;
while (node.next != null) {
if (node.next.val != val) {
node = node.next;
} else {
node.next = node.next.next;
}
}
return result.next;
}
- 遞歸
public ListNode removeElements(ListNode head, int val) {
if (head == null) {
return null;
}
head.next = removeElements(head.next, val);
return head.val == val ? head.next : head;
}
四. 執(zhí)行結(jié)果
- 迭代
執(zhí)行用時(shí) : 2 ms, 在Remove Linked List Elements的Java提交中擊敗了98.94% 的用戶
內(nèi)存消耗 : 42.7 MB, 在Remove Linked List Elements的Java提交中擊敗了70.29% 的用戶
- 遞歸
執(zhí)行用時(shí) : 2 ms, 在Remove Linked List Elements的Java提交中擊敗了98.94% 的用戶
內(nèi)存消耗 : 42.8 MB, 在Remove Linked List Elements的Java提交中擊敗了69.15% 的用戶