<LeetCode天梯>Day025 删除链表的倒数第N个节点(双指针) | 初级算法 | Python

简介: <LeetCode天梯>Day025 删除链表的倒数第N个节点(双指针) | 初级算法 | Python

以下为我的天梯积分规则:


每日至少一题:一题积分+10分

若多做了一题(或多一种方法解答),则当日积分+20分(+10+10)

若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60)


初始分为100分

若差一天没做题,则扣积分-10分(周六、周日除外注:休息)

坚持!!!


初级算法

刷题目录

链表


image.png

image.png

题干

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例1:

image.png

输入:head = [1,2,3,4,5], n = 2

输出:[1,2,3,5]

示例2:

输入:head = [1], n = 1

输出:[]

示例3:

输入:head = [1,2], n = 1

输出:[1]

提示:

image.png

双指针法

分析:

根据题干的要求,我们需要删除倒数第n个节点,在返回头结点。只需要找到倒数第n个节点,将其删除,再返回。

说真的不难,直接用双指针,来!

借用一下大佬的草图

image.png

# 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: ListNode, n: int) -> ListNode:
        # 定义哑终端,用于前项循环
        dummy = ListNode(0)
        dummy.next = head
        # 设置两个指针
        fast = head
        slow = dummy
        # 移动fast到n步
        for i in range(n):
            fast = fast.next
        # 快慢节点同时走,循环到fast的末尾
        while fast:
            fast = fast.next
            slow = slow.next
        slow.next = slow.next.next
        return dummy.next

卷啊卷,一直卷!~

image.png


相关文章
|
1月前
|
算法
LeetCode刷题---21.合并两个有序链表(双指针)
LeetCode刷题---21.合并两个有序链表(双指针)
|
1月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
1月前
|
存储 算法
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
|
1月前
|
存储 容器
LeetCode刷题---11. 盛最多水的容器(双指针-对撞指针)
LeetCode刷题---11. 盛最多水的容器(双指针-对撞指针)
|
1月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
1月前
leetcode2487.从链表中移除节点
leetcode2487.从链表中移除节点
20 1
|
1月前
|
存储 算法 索引
LeetCode刷题---链表经典问题(双指针)
LeetCode刷题---链表经典问题(双指针)
|
1月前
|
算法
LeetCode刷题---160. 相交链表(双指针-对撞指针)
LeetCode刷题---160. 相交链表(双指针-对撞指针)
|
1月前
|
算法 索引
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
|
1月前
|
算法 索引
LeetCode刷题---141. 环形链表(双指针-快慢指针)
LeetCode刷题---141. 环形链表(双指针-快慢指针)