news 2026/4/3 8:11:57

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/3/31 12:22:58

LTX-2 GGUF版 - 一键生成音视频,8G显存可用 让创作更轻松 支持50系显卡 ComfyUI工作流 一键整合包

LTX-2 是由 Lightricks 推出的开源音视频生成模型&#xff0c;它的最大特点是能在同一个模型里同时生成“画面”和“声音”&#xff0c;让视频和音频自然同步。它支持文本、图片甚至音频作为输入&#xff0c;能快速生成对应的视频或音频内容。 在各路社区大神的不断努力下&…

作者头像 李华
网站建设 2026/3/14 7:44:54

smartDoorVisit通用智能门锁访客系统平台介绍说明

一、项目背景及简介smartDoorVisit 是一套面向社区、园区和企业办公场景的访客预约系统前端项目。基于 uni-app 构建&#xff0c;支持 H5 为主的多端发布形态&#xff0c;提供访客预约、二维码通行、访客记录与结果反馈等能力&#xff0c;结合后端门禁/物联网平台实现无接触、高…

作者头像 李华
网站建设 2026/3/16 1:43:07

效果图云渲染平台如何选择?

效果图云渲染平台如何选择&#xff1f;在各类设计工作中&#xff0c;效果图渲染扮演着不可或缺的角色 —— 它不仅能让设计方案以更直观、生动的形式呈现&#xff0c;更能有效助力项目洽谈与交易转化。不过&#xff0c;不同场景下的效果图对尺寸要求差异显著&#xff0c;像建筑…

作者头像 李华
网站建设 2026/3/20 8:09:12

网络工程师资源合集

2025年5月网络工程师课程 文件大小: 37.9GB内容特色: 2025工全程37.9GB&#xff0c;含最新考纲真题适用人群: 备考网络工程师证书的IT技术人核心价值: 系统梳理考点实战题库&#xff0c;一次通关下载链接: https://pan.quark.cn/s/8dff8f2a31d9 ##网络工程师网络安全视频教程…

作者头像 李华
网站建设 2026/3/22 12:23:20

【无人机导航】基于强化学习自主无人机导航路径规划附Matlab代码

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

作者头像 李华