5-1 Leetcode中和链表相关的问题

Posted 创造型快乐or享受型

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-1 Leetcode中和链表相关的问题相关的知识,希望对你有一定的参考价值。

lectcode 203. 移除链表元素

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

示例:

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

 方法1 不采用虚拟头结点

1 public class ListNode {
2 
3     public int val;
4     public ListNode next;
5 
6     public ListNode(int x) {
7         val = x;
8     }
9 }
 1 class Solution {
 2 
 3     public ListNode removeElements(ListNode head, int val) {
 4               //1.首先考虑头结点(循环的开始部分)
 5         while(head != null && head.val == val){  //如果head的值=val,同时访问head.val有一个默认条件:head要满足head不为空。删除头结点后,新的头结点可能还有head.val == val,所以用while,不用if
 6             ListNode delNode = head;
 7             head = head.next;
 8             delNode.next = null;//delNode和链表断掉关系
 9         }
10 
11         if(head == null) //head == null:头结点为空,即整个链表为空,此时后面的逻辑就不需要运行了,直接返回head
12             return head; //其实就是返回null
13           //2.删除链表中间的节点值等于val
14         ListNode prev = head;
15         while(prev.next != null){      //while循环删除链表中间值等于val的节点
16             if(prev.next.val == val) {
17                 ListNode delNode = prev.next;
18                 prev.next = delNode.next;
19                 delNode.next = null;
20             }
21             else
22                 prev = prev.next;
23         }
24 
25         return head;
26     }
27 }

 

 

 

其实

等价于

2.采用虚拟头结点

 1 class Solution3 {
 2 
 3     public ListNode removeElements(ListNode head, int val) {
 4 
 5         ListNode dummyHead = new ListNode(-1);//dummyHead是虚拟头结点,永远不会访问它的值,所以在这里随便给了一个值,给-1.
 6         dummyHead.next = head;
 7 
 8         ListNode prev = dummyHead;
 9         while(prev.next != null){    //while循环删除链表中间值等于val的节点
10             if(prev.next.val == val)
11                 prev.next = prev.next.next;
12             else
13                 prev = prev.next;
14         }
15 
16         return dummyHead.next;
17     }
18 }

 

以上是关于5-1 Leetcode中和链表相关的问题的主要内容,如果未能解决你的问题,请参考以下文章

[算法] leetcode单链表相关题目详解

[LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径

[LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径

817. Linked List Components - LeetCode

leetcode-剑指 Offer 34二叉树中和为某一值的路径

leetcode61旋转链表