zoukankan      html  css  js  c++  java
  • LeetCode:删除链表中的节点【203】

    LeetCode:删除链表中的节点【203】

    题目描述

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

    示例:

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

    题目分析

      链表的经典问题。首先我们要清楚这不是双向链表,进行删除操作,一定要知道待删除节点的前一个和后一个节点后一个节点可以用Node.next代指,但是前一个需要一个专用的指针,所以这就是链表的双指针问题

      

    Java题解

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode removeElements(ListNode head, int val) {
            //待删除的节点有三种情况:
            //CASE1:头部节点是目标值,我们直接跳到next,直到摆脱这种情况
            //CASE2:中间节点是目标值,L=R,R=R.next; 条件满足时 L.next=R.next即可
            //CASE3:尾部节点是目标值,同上。
            while(head!=null&&head.val==val)
                head=head.next;
        
            ListNode L = new ListNode(0);
            ListNode R = head;
            L.next =R;
            while(R!=null)
            {
                if(R.val==val)
                {
                    L.next=R.next;
                    R=L.next;
                    continue;
                }
                L =R;
                R=R.next;
            }
            return head;    
        }
    }
    

      

  • 相关阅读:
    ionic3开发环境搭建与配置(win10系统)
    angular4打包以后,刷新报404
    css3文字渐变无效果的解决方案
    node-sass安装失败的解决方案
    python logging 重复写日志问题
    进程和线程的概念
    软件开发目录规范
    相对导入
    python引入导入自定义模块和外部文件
    异常处理
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9485279.html
Copyright © 2011-2022 走看看