news 2026/8/29 8:04:59

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/8/22 2:48:05

【毕业设计】基于深度学习卷积神经网络对狗注意力是否集中识别基于python_CNN深度学习卷积神经网络对狗注意力是否集中识别

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

作者头像 李华
网站建设 2026/8/29 7:14:55

【TSP问题】基于变邻域搜索算法求解旅行社问题附Matlab代码和论文

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

作者头像 李华
网站建设 2026/8/21 17:37:14

碳排放压力之下,企业用能管理正在悄悄换一种玩法

安科瑞刘鸿鹏摘要在“双碳”目标和制造业成本压力持续加大的背景下&#xff0c;企业用能管理正从“统计型管理”向“过程型、决策型管理”转变。传统依赖人工抄表和经验判断的能源管理模式&#xff0c;已难以支撑企业对能效提升、用能安全与碳资产管理的综合需求。本文结合企业…

作者头像 李华
网站建设 2026/8/27 6:37:57

学Java后端必须学spring,spring框架为什么这么多人用?

Spring是我们Java程序员面试和工作都绕不开的重难点。很多粉丝就经常跟我反馈说由Spring衍生出来的一系列框架太多了&#xff0c;根本不知道从何下手&#xff1b;大家学习过程中大都不成体系&#xff0c;但面试的时候都上升到源码级别了&#xff0c;你不光要清楚了解Spring源码…

作者头像 李华