• 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
     
    下图链接为
     
  • 相关阅读:
    罗素语录
    《一步一步写嵌入式操作系统》读书笔记1—Skyeye介绍、安装和HelloWorld
    在Raspberry Pi上安装XBMC
    Raspberry Pi上手
    axios案例
    php+mysql修改数据库数据
    将前台输入的“意见反馈”提交到后台数据库
    用JavaScript动态生成HTML(PHP+MYSQL)(2)
    用JavaScript动态生成HTML(PHP+MYSQL)(1)
    SQL课堂笔记--设计数据库
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12585100.html
Copyright © 2020-2023  润新知