栈高频面试题全解析:7道必刷题目+详细解题思路
7道经典面试题,从基础到单调栈,覆盖括号匹配、路径处理、逆波兰表达式等核心场景,附完整 C++ 实现。 一、有效的括号 简单 LeetCode 20. 有效的括号 题目描述 给定一个只包含 '('、')'、'{'、'}'、'['、']' 的...
7道经典面试题,从基础到单调栈,覆盖括号匹配、路径处理、逆波兰表达式等核心场景,附完整 C++ 实现。 一、有效的括号 简单 LeetCode 20. 有效的括号 题目描述 给定一个只包含 '('、')'、'{'、'}'、'['、']' 的...
栈(Stack)和队列(Queue)是计算机科学中最基础、也最常用的两种数据结构。无论是浏览器的”后退”功能、编译器的括号匹配,还是操作系统的任务调度,背后都少不了它们的身影。本文将带你从概念出发,一步步用 C++ ...
队列(Queue)是一种先进先出(FIFO)的数据结构,在算法面试中被广泛考察。本文精选 7 道 LeetCode 高频队列题目,涵盖设计题、单调队列、优先队列等核心场景,每题附解题思路与完整 C++ 实现。 一、用栈实现队列 简单 Lee...
在算法面试中,链表是当之无愧的“高频考点”——它结构简单但灵活性强,能有效考察候选人的指针操作、逻辑思维和边界处理能力。本文精选 9 道链表经典面试题,从基础到进阶,涵盖快慢指针、双指针、递归等核心技巧。每道题都包含详细的解题思路、图解分析...
链表是计算机科学中最基础、最常用的线性数据结构之一,与数组并称线性结构的 “两大基石”。它弥补了数组在动态插入、删除场景下的性能短板,也是面试中必考的基础考点—— 从基础实现到环、相交等变形问题,考察的核心是对指针操作、逻辑思维和边界条件的...
在字符串匹配的经典算法中,KMP 算法凭借其 O (n+m) 的时间复杂度(n 为主串长度,m 为模式串长度)成为首选方案,而next数组是 KMP 算法的核心 —— 它通过记录模式串的最长相等前后缀,避免了主串指针的回溯。但标准next数...
前言 在算法面试中,“搜索旋转排序数组(LeetCode 面试题 10.03)” 是经典的二分查找变种题,既考察对旋转数组特性的理解,也考验二分查找的灵活运用。本文会从基础概念到解题思路,再到代码实现,全方位拆解这道题。 一、什么是旋转数组...
前言 KMP 算法是由 Knuth、Morris、Pratt 三位学者共同提出的字符串匹配高效算法,核心解决了传统暴力匹配算法中 “主串指针回溯” 的问题,将时间复杂度优化到线性级别。无论是面试高频考点,还是工程中字符串匹配的实际应用,KM...
简单说明 hashtable适用于需要频繁插入、删除、查找的场合、在这些场合中hashtable都可以常数平均时间完成、然而之所以hashtable的效率这么高、是因为在以上这些操作时都是通过hash function直接定位元素在表中的位...
分布式全局唯一ID生成器 很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等。 传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表,如果你分表了,id就会重复,失去唯一性...