news 2026/5/1 8:04:55

LeetCode算法刷题——双指针

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode算法刷题——双指针

双指针算法定义

双指针算法是一种在数组、链表或其他线性数据结构上使用两个“指针”(通常是索引或引用)协同遍历,以高效解决问题的算法技巧。这里的“指针”不一定是指 C/C++ 中的内存指针,更多是指数组下标或迭代器。

通过维护两个指针(如左指针 left 和右指针 right),根据问题的性质动态地移动它们,从而避免使用嵌套循环,将时间复杂度从 O(n²)优化到O(n)。

常见类型

普通双指针:一般情况下两个指针往同一个方向移动。

对撞双指针:两个指针面对面移动。

快慢双指针:一快一慢同向移动。

LeetCode练习题—[141]环形链表

本题为简单题,目的是为了考察对于双指针算法的运用,本题运用的方法为快慢双指针

注:以下解法仅代表个人观点,并非唯一解法,仅供记录与参考!

题目如下所示:

代码解析(python):

# # @lc app=leetcode.cn id=141 lang=python3 # # [141] 环形链表 # # @lc code=start # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def hasCycle(self, head: Optional[ListNode]) -> bool: # 如果链表为空或只有一个节点,直接返回False if head is None: return False # 使用快慢指针法,初始都指向头节点 slow = head fast = head # 当快指针和快指针的下一个节点都不为空时继续循环 while fast is not None and fast.next is not None: # 慢指针每次前进一步 slow = slow.next # 快指针每次前进两步 fast = fast.next.next # 如果快慢指针相遇,说明存在环 if slow == fast: return True # 如果循环结束仍未相遇,说明没有环 return False

LeetCode练习题—[881]救生艇

本题为中等题,目的是为了考察对于双指针算法的运用,本题运用的方法为对撞双指针

注:以下解法仅代表个人观点,并非唯一解法,仅供记录与参考!

题目如下所示:

代码解析(python):

# # @lc app=leetcode.cn id=881 lang=python3 # # [881] 救生艇 # # @lc code=start class Solution: def numRescueBoats(self, people: List[int], limit: int) -> int: # 如果人员列表为空或为None,直接返回0 if people is None or len(people) == 0: return 0 # 将人员按体重升序排序 people.sort() # 初始化双指针:i指向最轻的人,j指向最重的人 i = 0 j = len(people) - 1 res = 0 while i <= j: # 当还有人员需要上船时循环 if people[i] + people[j] <= limit: # 如果最轻的人和最重的人可以同乘一艘船 i += 1 # 最轻的人上船 j -= 1 # 最重的人总是上船 res += 1 # 使用了一艘船 return res
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 22:49:21

基于MATLAB的分块压缩感知程序实现与解析

一、分块压缩感知核心流程 分块压缩感知&#xff08;Block Compressive Sensing, BCS&#xff09;通过将图像分块后独立处理&#xff0c;显著降低计算复杂度。其核心步骤如下&#xff1a; 图像分块&#xff1a;将图像划分为小块&#xff08;如88或1616&#xff09;。稀疏变换&a…

作者头像 李华
网站建设 2026/5/1 7:11:22

实时云渲染赋能电网数字孪生:技术方案与场景落地

一、数字孪生在智慧电网中的价值与现存瓶颈&#xff08;一&#xff09;核心优势数字孪生技术贯穿智慧电网发电、输电、配电、用电四大核心环节&#xff0c;为电网管理提供多维度支撑&#xff1a;基础支撑层面&#xff1a;融合 GIS&#xff08;地理信息系统&#xff09;、BIM&am…

作者头像 李华
网站建设 2026/5/1 7:00:58

制造业ERP管理系统平台对比与适配选型解决方案

在制造业数智化转型深化的当下&#xff0c;ERP管理系统已成为整合生产、供应链、财务等全链路资源的核心载体。当前市场中ERP平台品类繁杂&#xff0c;技术架构与适配场景差异显著&#xff0c;企业如何通过精准对比筛选适配自身需求的系统&#xff0c;直接决定数字化转型成效。…

作者头像 李华
网站建设 2026/5/1 7:01:33

深度学习毕设选题推荐:基于python_CNN深度学习卷积神经网络对狗注意力是否集中识别基于python对狗注意力是否集中识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 7:04:53

【流量向头部集中】

【流量向头部集中】章泽天开设了“小天章”的个人播客了&#xff0c;小红书账号也开通了&#xff0c;第一期访谈嘉宾是刘嘉玲&#xff0c;爆料了梁朝伟的“道歉卡”&#xff0c;这种资源&#xff0c;普通自媒体人一辈子也够不着的。这说明&#xff1a; &#xff08;1&#xff0…

作者头像 李华