news 2026/7/4 9:46:09

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/6/21 19:18:05

一文搞定 Vmware 虚拟机 Linux 配置固定 IP 地址

在使用VMware虚拟机的时候因为默认是DHCP动态分配的IP地址&#xff0c;所以可能会在每次启动的时候都变换一个IP地址。这个对于很多场景就很不方便&#xff0c;特别是配置了一些配置文件里IP地址都要修改&#xff0c;所以如果希望IP地址不要变化可以按照这个文章手动配置一个静…

作者头像 李华
网站建设 2026/7/2 14:21:30

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

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

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

制造业ERP系统适配性解决方案:从选型到落地的全链路指南

在制造业数字化转型深化推进的背景下&#xff0c;ERP系统作为整合全链条资源的核心载体&#xff0c;已成为破解生产效率偏低、供应链协同不畅、成本管控乏力等痛点的关键支撑。但当前市场中ERP产品品类繁杂&#xff0c;功能侧重各异&#xff0c;企业如何筛选出适配自身业务的系…

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

计算机深度学习毕设实战-基于python的卷积神经网络对狗注意力是否集中识别基于python_CNN深度学习卷积神经网络对狗注意力是否集中识别

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

作者头像 李华
网站建设 2026/7/1 17:52:59

账号多、消息杂?小红书聚合系统,帮你理清所有运营琐事

小红书多号运营的痛&#xff0c;谁懂啊&#xff01;账号切换到怀疑人生&#xff0c;A号刚看完数据&#xff0c;B号的私信又堆了一堆&#xff1b;评论、消息散在各个账号&#xff0c;稍不留意就漏回&#xff1b;为了赶黄金发布时间&#xff0c;每天定N个闹钟&#xff0c;连吃饭都…

作者头像 李华