zoukankan      html  css  js  c++  java
  • 203. 移除链表元素

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

    示例:

    输入: 1->2->6->3->4->5->6, val = 6
    输出: 1->2->3->4->5
    package leetcode;
    
    public class leetcode203 {
        /*
         * 完全借鉴别人的code 解题思路:
         * 
         * (1) 我们需要先将链表的头结点保存下来,但是有一种情况需要注意:
         * 
         * 头节点的值也要被删除的时候(head.val == val),我们不能简单的直接将head保存起来,要把链表前面连续的需要删除的节点
         * 从链表移除出去,得到一个头节点不需要被删除的新链表(head.val != val)。
         * 
         * 也就是第1个循环所做的事情。
         * 
         * 这里需要再做一次非空校验,例如输入[1,1,1] ,1; 链表全是1,执行过(1)后,新链表为空,直接返回null即可。
         * 
         * (2) node 的初始值是头节点(不等于val),循环遍历链表的时候,每次执行的操作是 判断下一个节点 是否要删除,即
         * 比较node.next.val 和 val,
         * 
         * 如果相等,将 判断的节点(node.next)移出链表,node.next = node.next.next
         * 
         * 如果不相等,继续往后遍历,node = node.next
         * 
         * (3) 最后返回head ---------------------!
         */
        public ListNode removeElements(ListNode head, int val) {
            if (head == null)
                return null;
            while (head != null && head.val == val) {
                head = head.next;
            }
            if (head == null)
                return null;
            ListNode node = head;
            while (node.next != null) {
                if (node.next.val == val) {
                    node.next = node.next.next;
                } else {
                    node = node.next;
                }
            }
            return head;
        }
    }
  • 相关阅读:
    win10的power shell可以学习少部分linux命令_功能与cmd类似
    js数组的初始化
    Vue.js 学习笔记
    jquery knob旋钮插件
    jquery 城市三级联动
    xampp 配置虚拟主机
    2016 360 前端开发 面经
    2016 乐视 前端开发 面经
    主流浏览器内核及前缀
    前端代码优化方法
  • 原文地址:https://www.cnblogs.com/binanry/p/10017215.html
Copyright © 2011-2022 走看看