LeetCode第十九題—Python實現
阿新 • • 發佈:2021-01-26
title: LeetCode No.19
categories:
- OJ
- LeetCode
tags:
- Programing
- LeetCode
- OJ
LeetCode第十九題
題目描述
給你一個連結串列,刪除連結串列的倒數第n個結點,並且返回連結串列的頭結點。
進階:你能嘗試使用一趟掃描實現嗎?
示例 1: 輸入:head = [1,2,3,4,5], n = 2 輸出:[1,2,3,5] 示例 2: 輸入:head = [1], n = 1 輸出:[] 示例 3: 輸入:head = [1,2], n = 1 輸出:[1] 提示: 連結串列中結點的數目為 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz
程式碼
# Definition for singly-linked list. class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def removeNthFromEnd(self, head, n): """ 基本思想:由於是尋找從後往前數第n個,因此第一遍先正數n個,然後第二遍再從頭開始往後遍歷同時第一遍正數的從n開始為空之後,這樣第二遍數的就變為到空還有n個 然後在去掉第倒數n個節點就行了。 """ a = head b = head # 第一遍數n個 for i in range(n): if a.next: a = a.next else: return head.next # 接著數第一遍的同時,第二遍從頭開始 while a.next: a = a.next b = b.next b.next = b.next.next return head