zoukankan      html  css  js  c++  java
  • 19. 删除链表的倒数第N个节点-链表(leetcode)

    收获:

      1.在python中对链表中节点进行操作时:

        a) 从前 我直接 return  head (错误)

        b)现在由于怕 head 会被修改,所以要设  point = Listnode(-1)            return point

      2. 我自己只想出了两遍遍历,收获了一遍遍历的思路:  双指针

        a)  使 fast 与 slow 之间始终隔着 n,以例题为例,n=2,需要保证 fast = 5 时候 slow = 3 , slow.next = slow.next.next 

        b) 我记得之前学C的数据结构,需要借助middle 来传递 .next,like   a = point.next;  point.next = a.next; a.next = None

           不知道在python 里面可以直接使用 slow.next = slow.next.next 

        

    代码1)   用了两次遍历的方法

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None

    class Solution:
        def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
            tail = head
            count = 0
            while tail :
                tail = tail.next 
                count +=1
            print(n)
            n = count - n 
            print(n)
            if n ==0:
                return head.next
            else:
                a = head
                m = n-1
                point = 0
                while point < m:
                    head = head.next 
                    point +=1
                target = head.next
                head.next = target.next
                target.next = None
                return a 
                

     代码2)一次遍历  思路借鉴leetcode官方题解

    # Definition for singly-linked list.
    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None

    class Solution:
        def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
            if head.next == None:
                return None

            point = ListNode(-1)
            point.next = head
            fast = slow = point 
            i = 0
            while fast.next:
                fast = fast.next
                i+=1   # 2 3 4-2 5-3
                if i>n:
                    slow = slow.next
            slow.next = slow.next.next
            return point.next
     
    下图链接为
     
  • 相关阅读:
    一. web框架-----------ES6语法和VUE介绍(一)
    十.Django---framework框架 响应器(渲染器)
    【hiho1087】Hamiltonian Cycle
    【CF160E】Buses and People
    【51nod1672】区间交
    【洛谷P2915】Mixed Up Cows
    【模板】长链剖分
    【洛谷P4552】IncDec Sequence
    【CF1181C】Flag
    【CF1181D】Irrigation
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12585100.html
Copyright © 2011-2022 走看看