zoukankan      html  css  js  c++  java
  • [LeetCode] Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val.

    Example
    Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
    Return: 1 --> 2 --> 3 --> 4 --> 5

    思路:建立一个新链头,然后遍历head,要注意对最后一个数据的处理

    时间复杂度 O(n)

    代码:

        public ListNode removeElements(ListNode head, int val) {
            ListNode node=new ListNode(val==Integer.MIN_VALUE?val+1:val-1);
            ListNode indexNode=node;
            ListNode t=head;
            while(t!=null)
            {
                if(t.val!=val)
                {
                    indexNode.next=t;
                    indexNode=indexNode.next;
                }
                else 
                {
                    if(t.next==null)//the last one
                    {
                        indexNode.next=null;
                    }
                }
                t=t.next;
            }
            return node.next;
        }

    优化

      上面的代码思路是将head遍历往node里面填充,这里是之间将head链接到node下,然后采用两个指针遍历,一个不断前进,一个指向最后一个符合要求的节点

        public ListNode removeElements(ListNode head, int val) {
            ListNode node=new ListNode(0);
            node.next=head;
            ListNode indexNode=node;
            ListNode t=head;
            while(t!=null)
            {
                if(t.val==val)
                {
                    indexNode.next=t.next;
                }
                else 
                {
                    indexNode=indexNode.next;
                }
                t=t.next;
            }
            return node.next;
        }
  • 相关阅读:
    Servlet开发
    HTML实现页面自动跳转的五种方法
    AVAYA话机管理
    AVAYA路由
    报关相关知识
    基本杆法
    AVAYA初始配置
    加塞和瞄准
    基本杆法图解
    AVAYA拨号计划
  • 原文地址:https://www.cnblogs.com/maydow/p/4643226.html
Copyright © 2011-2022 走看看