力扣 203. 移除連結串列元素 難度:簡單
阿新 • • 發佈:2021-12-20
題目
給你一個連結串列的頭節點head
和一個整數val
,請你刪除連結串列中所有滿足Node.val == val
的節點,並返回新的頭節點。
示例 1:
輸入:head = [1,2,6,3,4,5,6], val = 6
輸出:[1,2,3,4,5]
示例 2:
輸入:head = [], val = 1
輸出:[]
示例 3:
輸入:head = [7,7,7,7], val = 7
輸出:[]
提示:
列表中的節點數目在範圍 [0, 104] 內
1 <= Node.val <= 50
0 <= val <= 50
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-linked-list-elements
解題思路
本道題有多種解法,我這裡採用的是遍歷原連結串列,然後再新開闢一個連結串列,如果原連結串列當前的數不刪除,則加入到新連結串列中,需要注意的是要建立一個頭結點來指向新連結串列的頭結點。
程式碼
1 class Solution { 2 public ListNode removeElements(ListNode head, int val) { 3 ListNode newHead = null; 4 ListNode top = new ListNode(); 5 6 int i=0; 78 while(head != null){ 9 if(head.val != val){ 10 11 if(i==0){//第一次 12 newHead = new ListNode(); 13 newHead.val = head.val; 14 top.next = newHead; 15 i++; 16 }else{ 17 18 ListNode node = new ListNode(head.val); 19 newHead.next = node; 20 newHead = node; 21 22 } 23 } 24 head = head.next; 25 } 26 return top.next; 27 } 28 }
本文來自部落格園,作者:宗神一,轉載請註明原文連結:https://www.cnblogs.com/zhangmuchen/p/15711940.html