Re: [闲聊] 每日LeetCode

楼主: pandix (面包屌)   2022-09-28 19:00:24
※ 引述《Rushia (みけねこ的鼻屎)》之铭言:
: 19. Remove Nth Node From End of List
: 移除链结串行后面数来的第n个节点,题目保证n必定小于串行长度。
: 思路:
: 1.用快慢指针来求解
: 2.先让快指针走n步,再来快慢指针一起走直到快指针为null
: 3.慢指针最后会停在要被删除的元素之前,将他指向下下个元素
: 4.避免遇到要删除的节点是头节点,我们用一个dummy作为头节点,快指针也改
: 成多走一步。
: 5.返回dummy.next
Python code:
class Solution(object):
def removeNthFromEnd(self, head, n):
prev = ListNode()
prev.next = head
curr = prev
dele = prev
for i in range(n):
curr = curr.next
while curr.next != None:
curr = curr.next
dele = dele.next
dele.next = dele.next.next
return prev.next
两年前的code 认不出来是我写的==
中间可以多加个判断
如果移完 fast 发现 fast == Null 就代表要删掉的是 head
这时候直接回传 head.next 就可以 这样就不用 dummy head 了
像这样
class Solution(object):
def removeNthFromEnd(self, head, n):
fast = slow = head
for i in range(n):
fast = fast.next
if not fast:
return head.next
while fast.next:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return head
应该有比较漂亮
作者: JerryChungYC (JerryChung)   2022-09-28 19:02:00
大师
作者: surimodo (好吃棉花糖)   2022-09-28 19:03:00
好扯 只剩我不会写py
作者: Rushia (みけねこ的鼻屎)   2022-09-28 19:05:00
喔喔喔喔喔
作者: SecondRun (雨夜琴声)   2022-09-28 19:09:00
但我不会拍松
楼主: pandix (面包屌)   2022-09-28 19:25:00
我也不会 我只是刷题用py==

Links booklink

Contact Us: admin [ a t ] ucptt.com