zoukankan      html  css  js  c++  java
  • 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 }
    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    获取AppSettings配置,获取连接字符串
    类在初始化的时候做了什么事
    Easyui Tabs 添加怎么添加。
    Tree数据格式 Easyui
    使用CodeFirst建表的时候要知道的特性
    从数据导出模型到pd设计器
    orm的几种排序写法
    Parallel.ForEach 并行循环的使用
    kendo gird 刷新数据源的几种方式
    表格设置宽度在ie9上无效
  • 原文地址:https://www.cnblogs.com/make-big-money/p/10325148.html
Copyright © 2011-2022 走看看