# algorithm-repo **Repository Path**: del-space/algorithm-repo ## Basic Information - **Project Name**: algorithm-repo - **Description**: 算法题库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-13 - **Last Updated**: 2025-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Algorithm-Repo 项目结构规范 ## 目录结构树 ``` Algorithm-Repo ├── src/ │ └── edu/ │ └── del/ │ └── main/ │ └── java/ │ ├── datastructures/ # 基础数据结构实现 │ ├── leetcode/ # LeetCode 题目解答 │ ├── questionbank/ # 题库主模块 │ ├── topics/ # 算法专题分类 │ └── utils/ # 工具类 ``` ## 模块命名规范 ### 1. 数据结构模块 (`datastructures`) **命名规则:**`[数据结构类型][实现方式].java` **示例:** ```java ArrayStack.java // 数组实现的栈 LinkedQueue.java // 链表实现的队列 BinarySearchTree.java // 二叉搜索树 ``` ### 2. LeetCode 题库模块(`leetcode`) **命名规则:**`L[题号]_[题目名称驼峰式].java` **示例:** ```java L0001_TwoSum.java // 第1题两数之和 L0206_ReverseLinkedList.java // 第206题反转链表 ``` ### 3. 题库专题模块 (`questionbank`) #### 文件命名规范 | 元素 | 格式 | 示例 | | :----------: | :-------------------: | :-------------------------------: | | 题目类 | `Q[题号]_[描述].java` | `Q05_LongestPalindromic.java` | | 测试类 | `Q[题号]Test.java` | `Q05_LongestPalindromicTest.java` | | 测试用例文件 | `q[题号]_cases.json` | `q05_cases.json` | 示例: ```bash # 添加字符串专题的简单题 git add src/main/java/questionbank/string/easy/Q344_ReverseString.java git commit -m "feat(qbank/string): add Q344 string reversal - 实现双指针解法 - 包含Unicode支持" # 添加配套测试 git add src/test/java/questionbank/string/easy/Q344_ReverseStringTest.java git commit -m "test(qbank/string): add Q344 edge cases - 测试空字符串 - 测试含emoji的字符串" ``` ### 4. 算法专题模块 (`topics`) **命名规则:** `[专题类型]/[具体问题].java` **子目录示例:** ``` /topics ├── dp/ # 动态规划专题 │ ├── Knapsack.java # 背包问题 │ └── Fibonacci.java # 斐波那契问题 ├── backtracking/ # 回溯专题 │ └── Permutations.java └── sorting/ # 排序专题 └── QuickSort.java ``` ### 5. 工具类模块 (`utils`) **命名规则:** `[功能描述]Utils.java` 或 `[工具类型]Helper.java` **示例:** ```java ArrayUtils.java # 数组工具类 TreePrinter.java # 树结构打印工具 TimeRecorder.java # 耗时记录工具 ``` ## 完整示例文件 `src/edu/del/main/java/leetcode/L0001_TwoSum.java` ```java /** * 力扣第1题 - 两数之和 * @solution 哈希表解法 * @timeComplexity O(n) * @spaceComplexity O(n) */ public class L0001_TwoSum { public int[] twoSum(int[] nums, int target) { Map map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement)) { return new int[]{map.get(complement), i}; } map.put(nums[i], i); } throw new IllegalArgumentException("No solution"); } } ``` ## 提交到远程仓库的建议 1. 在项目根目录添加 `README.md` 文件(即本文件) 2. 建议的远程仓库命名 ```bash git remote add origin https://github.com/yourname/algorithm-repo.git ``` 3. 首次提交命令: ```bash git add . git commit -m "feat(init): initialize project structure" git push -u origin main ``` ## 版本控制规范 | 提交类型 | 前缀 | 示例 | |----------------|-------|-------------------------------------| | 新功能 | feat | "feat(ds): add RedBlackTree impl" | | 问题修复 | fix | "fix(leetcode): correct L0153 case" | | 文档更新 | docs | "docs: update structure guideline" | | 测试代码 | test | "test: add BST unit tests" | #### 1. 多模块提交规范表 | 模块类型 | 提交前缀 | 范围(scope) | 示例 | 文件存放规则 | | :----------: | :------: | :---------: | :------------------------------------------: | :------------------------------: | | **题目类** | feat | leetcode | `feat(leetcode): add L206 reverse list` | `src/main/java/leetcode/{难度}/` | | **数据结构** | feat | ds | `feat(ds): implement Trie tree` | `src/main/java/datastructures/` | | **算法模板** | feat | algorithm | `feat(algorithm): add DP knapsack template` | `src/main/java/algorithms/` | | **测试用例** | test | 对应模块 | `test(ds): add Trie stress test` | `src/test/java/[对应模块路径]/` | | **文档说明** | docs | 对应模块 | `docs(algorithm): update backtracking guide` | `docs/[模块名]/` | | **工具类** | chore | utils | `chore(utils): add array generator` | `src/main/java/utils/` | #### 2. 多层级目录提交示例 ```bash # 新增动态规划专题下的背包问题 git add src/main/java/algorithms/dp/knapsack/Knapsack01.java git commit -m "feat(algorithm): add 0-1 knapsack solution - 实现基础01背包解法 - 添加空间优化版本 - 包含测试用例" # 新增数据结构模块 git add src/main/java/datastructures/trie/Trie.java git commit -m "feat(ds): implement Trie with array - 支持基本插入/查询操作 - 包含内存优化设计" # 添加配套测试 git add src/test/java/datastructures/trie/TrieTest.java git commit -m "test(ds): add Trie boundary tests ``` #### 3. 动态规划专题示例 ```java algorithms/ └── dp/ ├── knapsack/ # 背包问题专题 │ ├── Knapsack01.java # 01背包 │ └── Unbounded.java # 完全背包 ├── LCS/ # 最长公共子序列 │ ├── LongestCommonSubsequence.java │ └── LongestPalindromicSubsequence.java └── README.md # DP专题说明文档 ``` 对应提交方式: ```bash # 添加整个DP专题 git add algorithms/dp/ git commit -m "feat(algorithm): add DP topic structure - 包含背包问题/LCS实现 - 添加基础文档说明" ``` #### 4. 数据结构实现规范 ```java // 文件路径:src/main/java/datastructures/linkedlist/DoublyLinkedList.java /** * 双向链表实现 * @feature * - 头尾节点指针 * - O(1)头部插入 * - O(n)随机访问 */ public class DoublyLinkedList { private static class Node { E data; Node prev, next; } // 实现代码... } ``` 提交命令: ```bash git commit -m "feat(ds): implement DoublyLinkedList - 支持基础增删查改操作 - 包含迭代器实现 - 通过所有边界测试" ``` #### 5. 复杂模块提交模板 ```bash type(scope): subject [模块说明] - 新增功能点1 - 优化项目2 - 修复问题3 [影响范围] - 修改文件1 - 影响模块2 [关联事项] Resolves #123 See also #456 BREAKING CHANGE: 需要更新依赖 ``` #### 6. 多模块关联提交 当修改涉及多个模块时 ```bash # 同时修改DP算法和测试工具 git add algorithms/dp/knapsack/Knapsack.java git add src/main/java/utils/ArrayGenerator.java git commit -m "feat(algorithm+utils): enhance knapsack solution - 优化DP空间复杂度 - 新增随机数组生成器 - 更新性能测试套件 Related to feature #789" ``` #### 7.文件命名规范 | 文件类型 | 命名规则 | 示例 | | -----------: | :--------------------------------------: | :-------------------------: | | 题目解法类 | `L[题号]_[驼峰名称].java` | `L0215_KthLargest.java` | | 测试类 | `[原类名]Test.java` | `L0215_KthLargestTest.java` | | 算法文档 | `[题号]_[算法类型].md` | `0215_quickselect.md` | | 数据结构实现 | `[结构类型][实现方式].java` | `RedBlackTree.java` | | 工具类 | `[功能]Utils.java`或 `[工具]Helper.java` | `ArrayUtils.java` | > 提示:建议保持所有命名使用**英文**和**驼峰式大小写**,避免使用中文或特殊字符 #### 8. 目录结构调整规范 | 操作类型 | 提交消息格式 | 示例 | | :------: | :----------------------------------------------: | :----------------------------------------------------: | | 新增目录 | `chore(structure): add [目录名]` | `chore(structure): add dp/knapsack folder` | | 重构目录 | `refactor(structure): move [原路径] to [新路径]` | `refactor(structure): move sort to algorithms/sorting` | | 删除目录 | `chore(structure): remove [目录名]` | `chore(structure): remove deprecated graphs` | #### 8. 完整工作流示例 ```bash # 1. 创建动态规划专题目录 mkdir -p src/main/java/algorithms/dp/knapsack # 2. 实现01背包问题 cat > src/main/java/algorithms/dp/knapsack/Knapsack01.java <> src/main/java/utils/ArrayGenerator.java <