1. question: 移除链表元素(简单)
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-linked-list-elements
示例 1:
1 2
| 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
|
示例 2:
1 2
| 输入:head = [], val = 1 输出:[]
|
示例 3:
1 2
| 输入:head = [7,7,7,7], val = 7 输出:[]
|
提示:
1 2 3
| 列表中的节点数目在范围 [0, 104] 内 1 <= Node.val <= 50 0 <= val <= 50
|
2. answers
这道题没什么可说的,注意边界条件即可。添加一个虚拟头结点似乎更方便操作。代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| class ListNodess {
int value; ListNodess next;
public ListNodess(){}
public ListNodess(int value) { this.value = value; this.next = null; }
public ListNodess(int value, ListNodess ln) { this.value = value; this.next = ln; } }
public class Solution_0052 {
public static ListNodess removeElements(ListNodess head, int val) {
ListNodess newHead = new ListNodess(); newHead.next = head;
ListNodess index = newHead; ListNodess temp = index.next;
while(temp != null) {
if(temp.value == val) { index.next = temp.next;
temp = temp.next; } else {
index = index.next; temp = index.next; }
}
return newHead.next;
}
public static void main(String[] args) { System.out.println();
ListNodess ln1 = new ListNodess(6); ListNodess ln2 = new ListNodess(5, ln1); ListNodess ln3 = new ListNodess(4, ln2); ListNodess ln4 = new ListNodess(3, ln3); ListNodess ln5 = new ListNodess(6, ln4); ListNodess ln6 = new ListNodess(2, ln5); ListNodess ln7 = new ListNodess(1, ln6);
ListNodess result = removeElements(ln7, 6);
while(result != null) { System.out.println(result.value); result = result.next; } } }
|
3. 备注
参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com),代码随想录 (programmercarl.com)。