leetcode_【203】移除链表元素

1.题目描述

删除链表中等于给定值 val 的所有节点。

示例:

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

2.解题思路

方法1:

如果当前链表值head.val不等于val,则新建一个节点放到ans后面

如果相等,则跳到链表下一个。

方法2:

遇到相等则跳指针

 要考虑好头节点跟val相等的情况。

3.代码

方法1:新建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static ListNode removeElements(ListNode head, int val) {
ListNode ans = new ListNode(-1);
ListNode res = ans;
while(head!=null){
if(head.val==val){
head = head.next;
}else{
ans.next =new ListNode(head.val) ;
ans = ans.next;
head = head.next;
}
}
return res.next;

}

方法2:跳指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static ListNode removeElements(ListNode head, int val) {
if(head == null)
return head;
//如果头节点与val相同
while (head != null && head.val == val)
head = head.next;
ListNode cur = head;
while(cur.next != null){
if(cur.next.val == val){
cur.next = cur.next.next;
}else{
    cur = cur.next;
}
}
return head;
}

4.提交记录

文章目录
  1. 1. 1.题目描述
  2. 2. 2.解题思路
  3. 3. 3.代码
  4. 4. 4.提交记录
| 139.6k