LeetCode 203 移除鍊錶元素

2021-10-01 17:41:51 字數 1313 閱讀 5436

刪除鍊錶中等於給定值val的所有節點。

示例:

輸入: 1->2->6->3->4->5->6, val = 6

輸出: 1->2->3->4->5

完整**參考:github **

此題難度定級為簡單,主要考察鍊錶的基本操作。

解法1:雙指標

思路:構造雙指標指向同一鍊錶,乙個用來讀鍊錶(temp),乙個用來刪除鍊錶元素(cur)。

演算法:由於待刪除元素可能為首節點,故需要先構建乙個臨時節點,在其後拼接原鍊錶。然後,再構造乙個指標指向拼接後鍊錶的首節點,用來操作鍊錶刪除元素。遍歷鍊錶,對符合條件的元素刪除(cur.next = cur.next.next 即改變 cur.next 的指向,刪除 cur.next 節點)。結束後返回 temp 指向的下乙個節點及其後的鍊錶部分。

public listnode removeelements(listnode head, int val)  else 

}// 返回臨時節點後的鍊錶

return temp.next;

}

解法2:陣列中轉,構造新鍊錶

思路:鍊錶資料轉存陣列,再構建新的鍊錶。

演算法:遍歷鍊錶,將數值儲存於陣列中,當 list 不為空時,以第乙個元素構造首節點,在其後構造餘下節點。

public listnode removeelements(listnode head, int val) 

// 篩選 list

listlist = new arraylist<>();

while (head != null)

head = head.next;

}// 防止 get(0) 異常

if (list.isempty())

// 構造結果鍊錶

listnode result = new listnode(list.get(0));

for (int i = 1; i < list.size(); i++)

return result;

}public static listnode addlistnodefromlast(listnode head, int num) else

// 把當前節點設定為尾節點

temp.next = newnode;

}return head;

}

LeetCode 203 移除鍊錶元素

刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5建立初始節點dummy和cur,cur等於dummy。再建立節點point等於head。然後point不為空時進入迴圈,如果point val等於val,那麼將point向後移動一步 如果...

LeetCode 203 移除鍊錶元素

題目 刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 筆記解析 刷題就 是個踩坑的過程,閃一下子卻很舒服,因為會有成長 坑點 1 注意有多個要刪除的節點鏈結 例子 1,2,6,6,6,3,4 解法 將三種類別分開討論,只要是cu...

leetcode 203 移除鍊錶元素

解題思路 方法一 1.新建乙個節點,遍歷鍊錶,如果值相等,連線到下乙個節點,原指標下移.public static listnode removeelements listnode head,int val listnode heada head listnode cur new listnode ...