关于 computer-science-tutor
computer-science-tutor 是用于计算机科学学习、解题和笔记整理的学科技能,适合学习者与辅导型 Agent。内容包括算法设计步骤、常见模式、代码模板和复杂度参考。
主要功能
- 01覆盖算法与数据结构主题
- 02提供算法解题步骤
- 03整理常见问题求解模式
- 04提供 BFS、DFS 等代码模板
- 05参考数据结构操作复杂度
适用场景
- 01练习算法题并逐步优化方案
- 02复习常见算法模式
- 03为图算法实现查阅代码模板
- 04比较数据结构操作的复杂度
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ szeyu/ vibe-study-skills --skill computer-science-tutor安装后在 Claude Code 中输入/computer-science-tutor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/algorithms.mdbig-o.mddata-structures.md详细介绍
计算机科学学科专家
为计算机科学学习、问题求解和笔记创建提供专业知识。
主题范围
mindmap
root((Computer Science))
Algorithms
Sorting
Searching
Graph Algorithms
Dynamic Programming
Data Structures
Arrays & Lists
Trees & Graphs
Hash Tables
Heaps & Queues
Systems
Operating Systems
Networks
Databases
Theory
Complexity
Automata
Computability
快速参考链接
- **算法模式:**参见 algorithms.md
- **数据结构:**参见 data-structures.md
- **Big-O 分析:**参见 big-o.md
图示模式
算法流程图
flowchart TB
A[Start] --> B{Condition?}
B -->|Yes| C[Process A]
B -->|No| D[Process B]
C --> E[End]
D --> E
数据结构可视化
graph TB
subgraph "Binary Search Tree"
A((8)) --> B((3))
A --> C((10))
B --> D((1))
B --> E((6))
C --> F((14))
end
时序图(API/流程)
sequenceDiagram
Client->>Server: Request
Server->>Database: Query
Database-->>Server: Results
Server-->>Client: Response
问题求解框架
算法设计步骤
- 理解 - 明确输入、输出和约束条件
- 示例 - 手动推演 2-3 个示例
- 蛮力法 - 从直观的 O(n²) 或 O(n!) 方案入手
- 优化 - 应用各种模式(双指针、滑动窗口等)
- 实现 - 编写清晰、模块化的代码
- 测试 - 测试边界情况(空、单个元素、重复元素)
常见模式
| 模式 | 适用场景 | 示例 |
|---|---|---|
| 双指针 | 已排序数组,查找数对 | 两数之和(已排序) |
| 滑动窗口 | 连续子数组 | 最大和子数组 |
| 哈希表 | 需要 O(1) 查找 | 两数之和(未排序) |
| BFS | 最短路径(无权图) | 迷宫求解 |
| DFS | 探索所有路径 | 排列 |
| 二分查找 | 已排序数据,查找元素 | 搜索旋转数组 |
| 动态规划 | 重叠子问题 | 斐波那契、背包问题 |
代码模板模式
二分查找
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # Not found
BFS 模板
from collections import deque
def bfs(start, target):
queue = deque([start])
visited = {start}
while queue:
node = queue.popleft()
if node == target:
return True
for neighbor in get_neighbors(node):
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
return False
DFS 模板
def dfs(node, visited):
if node in visited:
return
visited.add(node)
# Process node
for neighbor in get_neighbors(node):
dfs(neighbor, visited)
复杂度速查
| 操作 | 数组 | 链表 | 哈希表 | BST(平均) |
|---|---|---|---|---|
| 访问 | O(1) | O(n) | O(1) | O(log n) |
| 查找 | O(n) | O(n) | O(1) | O(log n) |
| 插入 | O(n) | O(1) | O(1) | O(log n) |
| 删除 | O(n) | O(1) | O(1) | O(log n) |
评论
支持 Markdown