本页面解释了 Interviews 存储库的组织方式,详细介绍了其文件夹结构和文件组织模式。无论您是按算法类型学习,还是为特定公司的面试做准备,它都提供了有效导航代码库的指导。有关存储库中涵盖的数据结构的更多信息,请参阅数据结构参考。
Interviews 存储库采用双重组织系统,旨在提供全面的技术面试准备资源。
这种双重结构允许用户专注于掌握特定的数据结构和算法,或者为特定公司的面试做准备。
来源:README.md1-27 README.md374-521
存储库组织为多个顶级目录,反映了按主题或问题类型的首要组织。
| 目录 | 描述 | 示例文件 |
|---|---|---|
| 数组 | 数组相关问题 | bestTimeToBuyAndSellStock.java, containsDuplicates.java |
| 回溯 | 回溯问题 | androidUnlockPatterns.java, generalizedAbbreviation.java |
| BinarySearch | 二分查找问题 | closestBinarySearchTreeValue.java, sqrt(x).java |
| BitManipulation | 位操作问题 | countingBits.java, hammingDistance.java |
| BreadthFirstSearch | BFS问题 | binaryTreeLevelOrderTraversal.java, wallsAndGates.java |
| DepthFirstSearch | DFS问题 | balancedBinaryTree.java, numberOfIslands.java |
| 设计 | 设计问题 | zigzagIterator.java |
| DynamicProgramming | DP问题 | houseRobber.java, climbingStairs.java |
| HashTable | 哈希表问题 | groupAnagrams.java, twoSum.java |
| 链表 | 链表问题 | addTwoNumbers.java, reverseLinkedList.java |
| 队列 | 队列问题 | movingAverageFromDataStream.java |
| 排序 | 排序问题 | meetingRooms.java |
| 栈 | 栈问题 | decodeString.java, trappingRainWater.java |
| 字符串 | 字符串问题 | addBinary.java, validPalindrome.java |
| 树 | 树问题 | invertBinaryTree.java, validateBinarySearchTree.java |
| Trie树 | Trie问题 | implementTrie.java, wordSquares.java |
| TwoPointers | 双指针问题 | 3Sum.java, mergeSortedArray.java |
| company | 公司特定问题 | 为不同公司提供的各种子目录 |
问题根据其底层数据结构或算法模式进行分类。这种组织方式有助于用户专注于学习特定的问题解决技巧。
来源:README.md374-521 leetcode/dynamic-programming/HouseRobber.java1-26 leetcode/array/ContainsDuplicatesII.java1-18
问题也按公司进行组织,这些公司在面试中经常会问到这些问题。这种结构有助于用户有针对性地准备特定公司的面试。
来源:company/airbnb/HouseRobber.java1-26 company/linkedin/HouseRobber.java1-26 company/microsoft/AddDigits.java1-22 company/microsoft/LinkedListCycle.java1-30 company/adobe/AddDigits.java1-22 company/amazon/LinkedListCycle.java1-30 company/bloomberg/LinkedListCycle.java1-30 company/yahoo/LinkedListCycle.java1-30 company/palantir/ContainsDuplicatesII.java1-18 company/airbnb/ContainsDuplicatesII.java1-18
许多问题同时出现在基于主题和基于公司的组织中。这种交叉引用允许用户了解哪些公司会提出哪些类型的问题,并从不同角度着手准备。
Robber问题出现在多个位置
所有三个实现都包含相同的解决方案
来源:leetcode/dynamic-programming/HouseRobber.java1-26 company/airbnb/HouseRobber.java1-26 company/linkedin/HouseRobber.java1-26
类似地,LinkedListCycle 问题也出现在多个公司目录中。
来源:company/microsoft/LinkedListCycle.java1-30 company/amazon/LinkedListCycle.java1-30 company/bloomberg/LinkedListCycle.java1-30 company/yahoo/LinkedListCycle.java1-30
每个解决方案文件通常遵循标准格式。
来自 HouseRobber.java 的示例结构
// Problem description
// You are a professional robber planning to rob houses along a street...
public class HouseRobber {
public int rob(int[] nums) {
// Implementation with dynamic programming approach
...
}
}
来源: company/airbnb/HouseRobber.java1-26 leetcode/dynamic-programming/HouseRobber.java1-26
该存储库支持几种使用模式,具体取决于您的目标。
company 目录。来源: README.md12-27 README.md41-53 README.md374-521
该存储库在 README.md 文件中包含数据结构和算法的详细文档。这些文档通过提供以下内容来补充代码示例:
该文档为理解代码库中的问题解决方案提供了理论基础。
| 资源类型 | 位置 | 目的 |
|---|---|---|
| 数据结构解释 | README.md | 解释每个数据结构及其时间复杂度。 |
| 算法解释 | README.md | 详细介绍算法及其时间复杂度。 |
| 运行时分析 | README.md | 涵盖大 O、小 O、Omega 和 Theta 符号。 |
| 在线判题 | README.md | 列出练习平台。 |
| 在线编码练习 | README.md | 列出模拟面试平台。 |
| 视频讲解 | README.md | 教育内容链接。 |
| 面试书籍 | README.md | 推荐阅读材料。 |
来源: README.md61-186 README.md188-288 README.md330-352 README.md41-53 README.md55-59 README.md355-362 README.md364-368