mcpField
C
computer-science-tutor

computer-science-tutor

github.com/szeyu开发3088 次安装2 天前更新
代码仓库

关于 computer-science-tutor

computer-science-tutor 是用于计算机科学学习、解题和笔记整理的学科技能,适合学习者与辅导型 Agent。内容包括算法设计步骤、常见模式、代码模板和复杂度参考。

主要功能

  1. 01覆盖算法与数据结构主题
  2. 02提供算法解题步骤
  3. 03整理常见问题求解模式
  4. 04提供 BFS、DFS 等代码模板
  5. 05参考数据结构操作复杂度

适用场景

  1. 01练习算法题并逐步优化方案
  2. 02复习常见算法模式
  3. 03为图算法实现查阅代码模板
  4. 04比较数据结构操作的复杂度

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/szeyu/vibe-study-skills --skill computer-science-tutor

安装后在 Claude Code 中输入/computer-science-tutor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
algorithms.md
big-o.md
data-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

快速参考链接


图示模式

算法流程图
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

问题求解框架

算法设计步骤
  1. 理解 - 明确输入、输出和约束条件
  2. 示例 - 手动推演 2-3 个示例
  3. 蛮力法 - 从直观的 O(n²) 或 O(n!) 方案入手
  4. 优化 - 应用各种模式(双指针、滑动窗口等)
  5. 实现 - 编写清晰、模块化的代码
  6. 测试 - 测试边界情况(空、单个元素、重复元素)
常见模式
模式适用场景示例
双指针已排序数组,查找数对两数之和(已排序)
滑动窗口连续子数组最大和子数组
哈希表需要 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