双指针技巧大揭秘:LintCode 20道经典数组题的C++11实现清单
双指针技巧大揭秘LintCode 20道经典数组题的C11实现清单【免费下载链接】LintCode C11 Solutions of All 289 LintCode Problems (No More Updates)项目地址: https://gitcode.com/gh_mirrors/lintc/LintCode在 LintCode 题库中双指针Two Pointers是解数组题最高效的技巧之一。开源项目LintCode收录了全部 289 道 LintCode 题目的 C11 解法并按算法分类整理其中标记为 Two Pointers 的经典数组题就有 20 道。本文带你用一份完整清单快速掌握双指针在排序、去重、合并、窗口扫描中的实战用法 项目简介一份免费的 C11 刷题宝库本项目提供了LintCode 全部 289 道题的 C11 标准答案每题都标注了时间复杂度、空间复杂度与难度等级所有源码按算法分类存放在 C/ 目录下另有少量 Python/ 与 Java/ 对照实现。你可以直接克隆仓库来学习git clone https://gitcode.com/gh_mirrors/lintc/LintCode 为什么推荐这里练双指针✅ 每题都给出最优复杂度例如 O(n) 时间 O(1) 空间✅ 代码风格统一、注释简洁适合新手逐行精读✅ 按 README.md 中的分类索引一眼定位到目标题目 双指针技巧3 种核心变化双指针的本质是让两个游标协同移动把两层循环压缩成一层。常见有 3 种变化变化形态典型场景本项目代表题 快慢指针同一方向原地去重、移除元素Remove Element、Move Zeroes 左右指针对向移动求区间、求极值Container With Most Water、Trapping Rain Water 滑动窗口同向伸缩子数组和/长度约束Minimum Size Subarray Sum、Subarray Sum II 20 道双指针经典数组题完整清单以下清单来自项目 README.md 中标注Two Pointers的题目全部附 C11 源码路径难度与复杂度一目了然1️⃣ 基础快慢指针去重与移除5 道#题目难度复杂度源码100Remove Duplicates from Sorted ArrayEasyO(n) / O(1)C/remove-duplicates-from-sorted-array.cpp101Remove Duplicates from Sorted Array IIEasyO(n) / O(1)C/remove-duplicates-from-sorted-array-ii.cpp172Remove ElementEasyO(n) / O(1)C/remove-element.cpp539Move ZeroesEasyO(n) / O(1)C/move-zeroes.cpp5Kth Largest ElementMediumO(n) 平均C/kth-largest-element.cpp核心口诀慢指针pos标记有效区末尾快指针扫描全数组遇到符合条件的元素就交换或写入。C/move-zeroes.cpp 中的实现只有 8 行是理解快慢指针的最佳入门样例。2️⃣ 分区与排序技巧4 道#题目难度复杂度源码31Partition ArrayMediumO(n) / O(1)C/partition-array.cpp373Partition Array by Odd and EvenEasyO(n) / O(1)C/partition-array-by-odd-and-even.cpp49Sort Letters by CaseMediumO(n) / O(1)C/sort-letters-by-case.cpp144Interleaving Positive and Negative NumbersMediumO(n) / O(1)C/interleaving-positive-and-negative-numbers.cpp 分区题的双指针 双向奔赴左指针找放错位置的元素右指针同理相遇即完成。3️⃣ 合并与交并有序数组的左指针右指针4 道#题目难度复杂度源码6Merge Sorted ArrayEasyO(mn) / O(1)C/merge-sorted-array.cpp64Merge Sorted Array IIEasyO(mn) / O(1)C/merge-sorted-array-ii.cpp547Intersection of Two ArraysEasyO(mn)C/intersection-of-two-arrays.cpp548Intersection of Two Arrays IIEasyO(mn)C/intersection-of-two-arrays-ii.cpp关键细节合并数组要从后往前写避免覆盖未处理的数据求交集时小者右移是双指针在两个独立数组上的经典配合。4️⃣ 排序双指针多数字求和与计数3 道#题目难度复杂度源码573 SumMediumO(n²) / O(1)C/3-sum.cpp593 Sum ClosestMediumO(n²) / O(1)C/3-sum-closest.cpp382Triangle CountMediumO(n²) / O(1)C/triangle-count.cpp模板套路先排序固定一个数剩下两个数用左右指针夹逼。C/3-sum.cpp 中还示范了跳过重复值去重的标准写法面试高频考点 5️⃣ 进阶压轴左右指针的数学美感4 道#题目难度复杂度源码363Trapping Rain WaterMediumO(n) / O(1)C/trapping-rain-water.cpp383Container With Most WaterMediumO(n) / O(1)C/container-with-most-water.cpp406Minimum Size Subarray SumMediumO(n) / O(1)C/minimum-size-subarray-sum.cpp404Subarray Sum IIHardO(nlogn) / O(n)C/subarray-sum-ii.cpp这几道题最能体现双指针的威力。以盛最多水的容器为例源码仅 20 行int i 0, j heights.size() - 1, max_area 0; while (i j) { max_area max(max_area, min(heights[i], heights[j]) * (j - i)); if (heights[i] heights[j]) { --j; } else if (heights[i] heights[j]) { i; } else { i, --j; } }来源C/container-with-most-water.cpp思路每次移动较矮的一侧因为宽度必然变小只有加高才可能获得更大面积——这就是贪心双指针的精髓。而 C/trapping-rain-water.cpp 更妙左右指针各维护一个侧边最高墙谁矮看谁一次扫描 O(n) 就算出总蓄水量连前缀数组都不需要。 新手学习路线建议第 1 周先刷「去重与移除」组Remove Element → Move Zeroes建立快慢指针手感第 2 周合并与交集组练习有序数组上的指针移动第 3 周3 Sum / Triangle Count 组掌握排序 夹逼模板第 4 周挑战 Trapping Rain Water、Container With Most Water理解移动指针的数学依据每道题对照 README.md 中的复杂度表格自查能否做到 O(n) 时间、O(1) 空间做不到就回看源码注释那里往往藏着关键的 invariant不变量。✨ 总结双指针不是玄学而是一套可以照抄的模板快慢指针处理原地修改左右指针处理区间极值滑动窗口处理子数组约束。本项目的 20 道双指针经典数组题按难度梯度排列配合统一风格的 C11 实现正是把这套模板练成肌肉记忆的最佳路径。克隆仓库、打开 C/ 目录今天就从 C/remove-element.cpp 开始吧 【免费下载链接】LintCode C11 Solutions of All 289 LintCode Problems (No More Updates)项目地址: https://gitcode.com/gh_mirrors/lintc/LintCode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

嵌入式DSP实战入门:从FFT频谱到电机控制的应用路径

嵌入式DSP实战入门:从FFT频谱到电机控制的应用路径

1. 从“黑盒子”到“透明工具”:我理解的DSP学习路径 提到DSP,很多刚入行的朋友,尤其是从单片机(比如STM32)转过来的,第一反应可能就是“数字信号处理”,然后脑子里立刻浮现出一堆复杂的数学公式…

2026/8/24 10:05:26 阅读更多 →
Figma-Context-MCP 快速上手指南:让AI直读设计稿,五分钟完成Figma转代码

Figma-Context-MCP 快速上手指南:让AI直读设计稿,五分钟完成Figma转代码

Figma-Context-MCP 快速上手指南:让AI直读设计稿,五分钟完成Figma转代码 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-C…

2026/8/24 10:05:26 阅读更多 →
嵌入式Linux开发:ARM平台Valgrind交叉编译与内存调试实战

嵌入式Linux开发:ARM平台Valgrind交叉编译与内存调试实战

1. 项目概述:为什么要在嵌入式开发中交叉编译Valgrind? 在嵌入式Linux开发里,内存泄漏和非法内存访问是两大“鬼见愁”问题。目标板资源有限,直接在板子上跑GDB调试,不仅效率低下,还可能因为工具链不完整而…

2026/8/24 10:05:26 阅读更多 →

最新新闻

地理空间基础模型:从海量数据预训练到智能体化决策的AI新范式

地理空间基础模型:从海量数据预训练到智能体化决策的AI新范式

1. 从“看图识字”到“看图决策”:地理空间基础模型的时代已来 如果你在过去几年里关注过AI领域,尤其是计算机视觉(CV)和自然语言处理(NLP),那么“基础模型”这个概念你一定不陌生。从GPT系列在…

2026/8/24 17:34:45 阅读更多 →
Fluid Player 快速上手:免费 HTML5 视频播放器的 VAST 广告实战指南

Fluid Player 快速上手:免费 HTML5 视频播放器的 VAST 广告实战指南

Fluid Player 快速上手:免费 HTML5 视频播放器的 VAST 广告实战指南 【免费下载链接】fluid-player Fluid Player - an open source VAST compliant HTML5 video player 项目地址: https://gitcode.com/gh_mirrors/fl/fluid-player 给站点加视频往往不止&quo…

2026/8/24 17:34:45 阅读更多 →
gdpr_rails 管理面板快速上手指南:如何 3 步搞定政策条款与数据导出管理

gdpr_rails 管理面板快速上手指南:如何 3 步搞定政策条款与数据导出管理

gdpr_rails 管理面板快速上手指南:如何 3 步搞定政策条款与数据导出管理 【免费下载链接】gdpr_rails Rails Engine for the GDPR compliance 项目地址: https://gitcode.com/gh_mirrors/gd/gdpr_rails gdpr_rails(又称 PolicyManager&#xff09…

2026/8/24 17:34:45 阅读更多 →
10分钟免客户端网盘直链下载:8大网盘直连IDM与Aria2

10分钟免客户端网盘直链下载:8大网盘直连IDM与Aria2

10分钟免客户端网盘直链下载:8大网盘直连IDM与Aria2 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

2026/8/24 17:34:45 阅读更多 →
如何为 asdf-golang 贡献代码:基于 ShellSpec 编写插件测试的完整教程

如何为 asdf-golang 贡献代码:基于 ShellSpec 编写插件测试的完整教程

如何为 asdf-golang 贡献代码:基于 ShellSpec 编写插件测试的完整教程 【免费下载链接】asdf-golang Go plugin for the asdf version manager [maintainerkennyp] 项目地址: https://gitcode.com/gh_mirrors/as/asdf-golang asdf-golang 是为 asdf 版本管理…

2026/8/24 17:34:45 阅读更多 →
C++函数模板:从代码冗余到泛型编程的实战指南

C++函数模板:从代码冗余到泛型编程的实战指南

1. 项目概述:从“硬编码”到“泛型思维”的跨越 最近在重温黑马程序员的C提高编程课程,正好看到P167到P173这部分关于普通函数模板的内容。这部分内容可以说是C从“面向过程/对象”编程迈向“泛型编程”世界的第一道门槛,也是很多初学者觉得抽…

2026/8/24 17:33:45 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →