LeetCode-203-移除連結串列元素
移除連結串列元素
題目描述:給你一個連結串列的頭節點 head 和一個整數 val ,請你刪除連結串列中所有滿足 Node.val == val 的節點,並返回 新的頭節點 。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-linked-list-elements/
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:連結串列遍歷
首先,初始化一個結點firstNode指向head結點,cur指向head結點,last指向firstNode結點,然後開始遍歷:
- 首先cur不能為空;
- 如果cur結點的值等於目標值val,則將last的next指向cur的next,並且cur賦值為cur的next;
- 如果cur結點的值不等於目標值val,則將last和cur結點往後移一位。
遍歷結束後,返回firstNode的next結點即為處理後的連結串列。
public class LeetCode_203 {
public static ListNode removeElements(ListNode head, int val) {
ListNode firstNode = new ListNode(-1);
firstNode.next = head;
ListNode cur = firstNode.next;
ListNode last = firstNode;
while (cur != null) {
if (cur.val == val) {
last.next = cur.next;
cur = last.next;
} else {
last = cur;
cur = cur.next;
}
}
return firstNode.next;
}
public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(6);
head.next.next.next = new ListNode(3);
head.next.next.next.next = new ListNode(6);
removeElements(head, 6);
while (head != null) {
System.out.print(head.val + " ");
head = head.next;
}
}
}
【每日寄語】 在這個並非盡善盡美的世界上,勤奮會得到報償,而遊手好閒則要受到懲罰。
「其他文章」
- JZ-023-二叉搜尋樹的後序遍歷序列
- JZ-020-包含 min 函式的棧
- LeetCode-133-克隆圖
- LeetCode-116-填充每個節點的下一個右側節點指標
- LeetCode-113-路徑總和 II
- JZ-010-矩形覆蓋
- LeetCode-345-反轉字串中的母音字母
- LeetCode-326-3的冪
- LeetCode-283-移動零
- LeetCode-268-丟失的數字
- LeetCode-263-醜數
- LeetCode-237-刪除連結串列中的節點
- LeetCode-226-翻轉二叉樹
- LeetCode-219-存在重複元素 II
- LeetCode-217-存在重複元素
- LeetCode-217-存在重複元素
- LeetCode-206-反轉連結串列
- LeetCode-204-計數質數
- LeetCode-203-移除連結串列元素
- LeetCode-257-二叉樹的所有路徑