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;
        }
  • 相关阅读:
    .net MVC 下载文件乱码问题解决方案
    javascript将json转字符串
    js中将字符串转换成json的三种方式
    mvc项目,导出到Excel,中文显示乱码
    20160606面试题总结
    bzoj 4318: OSU!
    bzoj 1419: Red is good
    Codeforces 123 E Maze
    HDU 4336 Card Collector
    Codeforces 540 D Bad Luck Island
  • 原文地址:https://www.cnblogs.com/skillking/p/9819653.html
Copyright © 2011-2022 走看看