LeetCode 203 Remove Linked List Elements

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 203 Remove Linked List Elements相关的知识,希望对你有一定的参考价值。

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

 

思路:

主要就是遍历链表,发现结点的值与要求的值相等的时候即可删除结点。这道题应该注意一下边界条件。

 

解法:

1.在头节点之前申请一个额外结点,这样就可以利用双指针进行删除的操作,比较方便。

 1 /*
 2     public class ListNode
 3     {
 4         int val;
 5         ListNode next;
 6 
 7         ListNode(int x)
 8         { val = x; }
 9     }
10 */
11 
12 public class Solution
13 {
14     public ListNode removeElements(ListNode head, int val)
15     {
16         ListNode extraNode = new ListNode(0);
17         extraNode.next = head;
18 
19         ListNode front = head;
20         ListNode behind = extraNode;
21 
22         while(front != null)
23         {
24             if(front.val == val)
25                 behind.next = front.next;
26             else
27                 behind = behind.next;
28             front = front.next;
29         }
30 
31         return extraNode.next;
32     }
33 }

 

2.不申请先于头结点的结点,以常规的方式进行遍历,这种方法需要注意边界条件。

 1 /*
 2     public class ListNode
 3     {
 4         int val;
 5         ListNode next;
 6 
 7         ListNode(int x)
 8         { val = x; }
 9     }
10 */
11 
12 public class Solution
13 {
14     public ListNode removeElements(ListNode head, int val)
15     {
16         ListNode flag = head;
17 
18         while(true)
19         {
20             if(head == null)
21                 return null;
22             if(flag.val != val)
23                 break;
24             flag = flag.next;
25             head = flag;
26         }
27 
28         while(flag.next != null)
29         {
30             if(flag.next.val == val)
31                 flag.next = flag.next.next;
32             else
33                 flag = flag.next;
34         }
35 
36         return head;
37     }
38 }

 

以上是关于LeetCode 203 Remove Linked List Elements的主要内容,如果未能解决你的问题,请参考以下文章

Java [Leetcode 203]Remove Linked List Elements

leetcode?python 203. Remove Linked List Elements

203. Remove Linked List Elements - LeetCode

LeetCode OJ 203Remove Linked List Elements

LeetCode 203. Remove Linked List Elements

LeetCode 203 Remove Linked List Elements