zoukankan      html  css  js  c++  java
  • 203. Remove Linked List Elements

    一、题目

      1、审题

      

      2、分析

        将链表中值为 val 的节点去除。

    二、解答

      1、思路:

        方法一、

          创建一个头结点,将后边的值为 val 的节点一一删除。

        public ListNode removeElements(ListNode head, int val) {
         
            if(head == null) return null;
            
            ListNode fakeHead = new ListNode(0);
            while(head != null && head.val == val) // 处理头结点
                head = head.next;
            
            fakeHead.next = head;
            
            while(head != null && head.next != null) {
                if(head.next.val == val)
                    head.next = head.next.next;
                else
                    head = head.next;
            }
            return fakeHead.next; 
        }

      优化: 采用 pre、cur 指针,使代码更简洁

        public ListNode removeElements3(ListNode head, int val) {
    
            if(head == null) return null;
            ListNode fakeHead = new ListNode(0);
            fakeHead.next = head;
            ListNode curr = head, prev = fakeHead;
            
            while(curr != null) {
                if(curr.val == val) 
                    prev.next = curr.next;
                else
                    prev = prev.next;
                curr = curr.next;
            }
            return fakeHead.next;
        }

      方法二、

        采用递归

        public ListNode removeElements2(ListNode head, int val) {
            
            if(head == null)
                return null;
            
            head.next = removeElements(head.next, val);
            return head.val == val ? head.next : head;
        }
  • 相关阅读:
    wcf中的Message类
    wcf消息契约
    iis部署wcf服务
    WCF数据契约
    wcf配置
    wcf中的使用全双工通信
    A股主要指数的市盈率(PE)估值高度
    股票的历史市盈率查询PE
    错误 Unable to find vcvarsall.bat 的终极无敌最完美的解决办法
    A股最新的自由现金流和折现估值查询
  • 原文地址:https://www.cnblogs.com/skillking/p/9819653.html
Copyright © 2011-2022 走看看