type
status
date
slug
summary
tags
category
icon
password
线性数据结构
主要数据结构:
- 数组 (Array)
- 链表 (Linked List)
- 字符串 (String)
- 栈 (Stack)
- 队列 (Queue)
数组、链表和字符串共用的解决方法:
- 双指针 (Two Pointers)
- 适用于多种线性数据结构的遍历、搜索和子结构寻找等问题。
- 滑动窗口 (Sliding Window)
- 主要用于处理子序列或子串相关的问题。
- 哈希表 (Hash Table)
- 适用于快速查找、统计及映射相关问题。
- 动态规划 (Dynamic Programming)
- 适用于解决具有重叠子问题和最优子结构的问题。
- 递归 (Recursion) / 回溯 (Backtracking)
- 适用于搜索所有可能解或路径的问题。
- 排序 (Sorting)
- 适用于对元素进行排序以简化问题或作为其他算法的前处理步骤。
- 贪心算法 (Greedy Algorithm)
- 适用于在每一步都采取最优选择的问题。
- 位操作 (Bit Manipulation)
- 适用于需要进行位运算的问题。
- 模拟 (Simulation)
- 适用于直接模拟问题描述的过程的问题。
数组特定的解决方法:
- 前缀和 / 差分
- 用于处理元素累计和或元素间的差异问题。
- 二分查找 (Binary Search)
- 主要用于有序数组的快速查找问题。
链表特定的解决方法:
- 快慢指针技巧
- 用于查找链表的中点、检测循环等问题。
- 合并 (Merge)
- 例如合并两个有序链表的问题。
字符串特定的解决方法:
- 前缀树 (Trie)
- 主要用于处理字符串匹配和前缀查找等问题。
- 字符串匹配算法 (例如 KMP, Boyer-Moore)
- 用于处理字符串的模式匹配问题。
栈和队列特定的解决方法:
- 单调栈 / 单调队列
- 用于解决元素之间的顺序和相对关系问题。
- Author:Tianqi
- URL:https://notion-next-olive-five-36.vercel.app//article/12802c41-3bd6-4458-8377-2c19f43ec88e
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts