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;    
        }
    }
    

      

  • 相关阅读:
    Linux的命令、用户、权限管理
    Java中快捷键
    数组的学习
    Java中方法定义和调用的学习
    java中的标识符、修饰符、关键字
    MYSQL的学习
    JavaScript小白教程2
    navicat中选择utf-8时的困惑
    python小白教程
    英语单词
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9485279.html
Copyright © 2011-2022 走看看