leetcode-203. 刪除連結串列中的節點
阿新 • • 發佈:2018-12-11
題目
刪除連結串列中等於給定值 val 的所有節點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6 輸出: 1->2->3->4->5
思路
- 判斷head是否為空
- 判斷head.val是否等於val
- 構造兩個節點,一個等於當前節點,一個等於當前節點的上一個節點,便於刪除節點
python程式碼
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def removeElements(self, head, val): """ :type head: ListNode :type val: int :rtype: ListNode """ if head == None: return head while head != None and head.val == val: head = head.next if head == None: return head L = ListNode(0) L2 = ListNode(0) L1 = head while L1 != None: if L1.val == val: L2.next = L1.next L1 = L1.next else: L2 = L1 L1 = L1.next return head
java程式碼
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { if(head != null) { while(head != null && head.val == val) { head = head.next; } if(head != null) { ListNode L1 = new ListNode(0); ListNode L2 = new ListNode(0); L1 = head; while(L1 != null) { if (L1.val == val) { L2.next = L1.next; L1 = L1.next; } else { L2 = L1; L1 = L1.next; } } } } return head; } }