码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-01-27 13:00:50      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:虚拟头结点   lse   ext   逻辑   ima   while循环   nbsp   方法   elements   

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 }
class Solution {

    public ListNode removeElements(ListNode head, int val) {
              //1.首先考虑头结点(循环的开始部分)
        while(head != null && head.val == val){  //如果head的值=val,同时访问head.val有一个默认条件:head要满足head不为空。删除头结点后,新的头结点可能还有head.val == val,所以用while,不用if
            ListNode delNode = head;
            head = head.next;
            delNode.next = null;//delNode和链表断掉关系
        }

        if(head == null) //如果链表中所有节点都是要删除的节点,那么运行到这里时链表已经为空了,有head == null,此时后面的逻辑就不需要运行了,直接返回head
            return head;
          //2.删除链表中间的节点值等于val
        ListNode prev = head;
        while(prev.next != null){   //while循环删除链表中值为val的节点
            if(prev.next.val == val) {
                ListNode delNode = prev.next;
                prev.next = delNode.next;
                delNode.next = null;
            }
            else
                prev = prev.next;
        }

        return head;
    }
}

 其实

技术分享图片

等价于

技术分享图片

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中和链表相关的问题

标签:虚拟头结点   lse   ext   逻辑   ima   while循环   nbsp   方法   elements   

原文地址:https://www.cnblogs.com/make-big-money/p/10325148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!