力扣 203. 移除链表元素 难度:简单

题目

给你一个链表的头节点 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;
 7 
 8         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 }

 

posted @ 2021-12-20 17:56  宗神一  阅读(23)  评论(0编辑  收藏  举报