Skip to main content
David Liu
/
Algorithms
Overview
Data Structures
Linear
Tree
Graph
Set
Search
DFS
BFS
FOR
Optimization
Decrease & Conquer
Dynamic Programming
Math
Study Tracks
JZ Track
Problem-Solving Framework
FAQ
AI Systems
Overview
Foundations
Overview
Classical ML
Deep Learning
Language Models
Reinforcement Learning
Generative AI
Overview
Text & Pre-Training
Training Systems
Alignment
Inference
Multimodal
RAG
Agents
AI Engineering
Recommender Systems
Retrieval
Pre-Ranking
Ranking
Re-Ranking
Metrics
Cold Start
PyTorch
Search Systems
AI Evaluation
AI Safety
CS Foundations
Overview
Systems Foundations
Computer Networks
Operating System
Software & System Design
Design Pattern
Object-Oriented Design
System Design
Software Engineering
Overview
Languages & Runtimes
Overview
Java
Python
Go
C++
Data Systems
Overview
MySQL
Redis
MongoDB
SQL
Middleware
Overview
Kafka
RabbitMQ
Elasticsearch
Nginx
Delivery & Operations
Overview
Unix
Docker
Kubernetes
CI/CD
Quality & Tooling
Observability
Software Testing
Engineering Tools
Test Prep
Overview
TOEFL iBT
Overview
Reading
Listening
Speaking
Writing
GRE General Test
Overview
Verbal
Quantitative
Analytical Writing
Language Foundations
Archive
Course Notes
Personal Notes
All Articles
Tags
Two Pointers Track
David Liu
8/3/26
Less than 1 minute
Two Pointers Track
双指针通过维护两个位置之间的关系,把部分二重枚举降为一次扫描。先区分指针是
相向移动
还是
同向移动
,再明确窗口或区间的不变量。
Reading Order
双指针总览
相向双指针
同向双指针
同向双指针实战
Checklist
两个指针各自代表什么边界?
每次移动后,什么条件必须仍然成立?
指针是否只单调移动,从而保证线性复杂度?
Prev
Dynamic Programming Track
Next
双指针