Skip to content

Lee985-cmd/algorithm-30days

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 JavaScript 数据结构与算法 - 30天挑战营

用费曼学习法,30天从0掌握算法
完整教程 + 120+配套资源 + 完整代码实现
⭐ 如果对你有帮助,请给个 Star!

License Stars Issues Forks


😰 你是否也这样?

❌ 看到算法题就头疼,完全不知道从何下手
❌ 面试被算法卡住,明明会写业务代码却过不了面试
❌ 买了一堆书,看了忘、忘了看,始终无法系统掌握
❌ LeetCode 刷了100道题,遇到新题还是不会
❌ 知道要学算法,但不知道学什么、怎么学

如果有以上任何一条,这个项目就是为你准备的!

🎯 已完成内容:

  • ✅ 30天完整教程(约10万字)
  • ✅ 120+配套资源(练习题、答案、思维导图、检查清单)
  • ✅ 所有算法的JavaScript实现
  • ✅ 费曼学习法 + 游戏化学习
  • ✅ 从0到LeetCode实战

💡 项目特色

✨ 1. 费曼学习法

"如果你不能简单地解释它,你就没有真正理解它。" — 费曼

每章都有"费曼输出"环节,逼着你真正理解,而不是死记硬背。

✨ 2. 系统化学习

第1周:基础数据结构(数组、链表、栈、队列)
第2周:高级数据结构(树、堆、哈希表、图)
第3周:排序算法(6种经典排序)
第4周:高级算法(二分查找、贪心、动态规划)

循序渐进,从易到难。

✨ 3. 配套齐全

每天包含4种资源:

  • 学习检查清单 - 明确学习目标
  • 练习题 - 巩固知识
  • 答案详解 - 详细解析
  • 思维导图 - 知识框架

总计 120+ 配套资源,约 40,000+ 行内容!

✨ 4. 完整代码

  • ✅ 所有算法都有 JavaScript 实现
  • ✅ 代码注释详细,小白也能看懂
  • ✅ 包含测试用例,可以直接运行
  • ✅ 性能对比,理解优化技巧

✨ 5. 游戏化学习

  • ✅ 勾选任务清单,完成有成就感
  • ✅ 打分评级系统,知道自己水平
  • ✅ 成就系统,激励持续学习

📚 课程大纲

第一周:基础数据结构

Day 主题 难度 预计时间
Day 1 为什么要学算法? 1.5h
Day 2 数组基础 2h
Day 3 链表详解 ⭐⭐ 2h
Day 4 栈详解 ⭐⭐ 2h
Day 5 队列详解 ⭐⭐ 2h
Day 6 递归详解 ⭐⭐⭐ 2.5h
Day 7 第一周复习与实战 ⭐⭐ 2h

第二周:高级数据结构

Day 主题 难度 预计时间
Day 8 树结构基础 ⭐⭐ 2h
Day 9 二叉搜索树 ⭐⭐⭐ 2.5h
Day 10 堆和优先队列 ⭐⭐⭐ 2.5h
Day 11 哈希表详解 ⭐⭐⭐ 2.5h
Day 12 图结构基础 ⭐⭐⭐ 2.5h
Day 13 图的遍历详解 ⭐⭐⭐ 2.5h
Day 14 最短路径 + 复习 ⭐⭐⭐⭐ 3h

第三周:排序算法

Day 主题 难度 预计时间
Day 15 冒泡排序 ⭐⭐ 2h
Day 16 选择排序 ⭐⭐ 2h
Day 17 插入排序 ⭐⭐ 2h
Day 18 归并排序 ⭐⭐⭐ 2.5h
Day 19 快速排序 ⭐⭐⭐ 2.5h
Day 20 堆排序 ⭐⭐⭐ 2.5h
Day 21 排序总结与对比 ⭐⭐ 2h

第四周:高级算法

Day 主题 难度 预计时间
Day 22 二分查找 ⭐⭐ 2h
Day 23 贪心算法 ⭐⭐⭐ 2.5h
Day 24 动态规划入门 ⭐⭐⭐⭐ 3h
Day 25 动态规划进阶 ⭐⭐⭐⭐ 3h
Day 26 动态规划高级 ⭐⭐⭐⭐⭐ 3.5h
Day 27 LeetCode 实战 1 ⭐⭐⭐⭐ 3h
Day 28 LeetCode 实战 2 ⭐⭐⭐⭐ 3h
Day 29 LeetCode 实战 3 ⭐⭐⭐⭐ 3h
Day 30 总复习与毕业致辞 ⭐⭐ 2h

🎁 配套资源

每个主题都包含4种配套资源,位于 配套资源/ 目录:

配套资源/
├── Day01-学习检查清单.md
├── Day01-练习题.md
├── Day01-答案详解.md
├── Day01-思维导图.md
├── Day02-学习检查清单.md
├── Day02-练习题.md
├── Day02-答案详解.md
├── Day02-思维导图.md
...
└── Day30-思维导图.md

总计:120+ 文件

资源说明

学习检查清单:

  • ✅ 明确学习目标
  • ✅ 知识点自查
  • ✅ 自我测试题
  • ✅ 实践能力检查
  • ✅ 费曼输出任务

练习题:

  • ✅ 基础概念题
  • ✅ 代码实践题
  • ✅ 理解应用题
  • ✅ 费曼输出练习
  • ✅ 评分标准

答案详解:

  • ✅ 标准答案
  • ✅ 详细解析
  • ✅ 执行过程演示
  • ✅ 错误分析
  • ✅ 改进建议

思维导图:

  • ✅ 知识框架
  • ✅ 核心要点
  • ✅ 学习建议
  • ✅ 常见误区

🚀 快速开始

方式 1:在线阅读(推荐)

直接在 GitHub 上浏览教程:

  1. 点击上方的课程大纲
  2. 按顺序阅读
  3. 完成配套资源

方式 2:阅读深度技术文章

我在掘金发布了系列深度解析文章,每篇1000+行:

💡 提示:将 xxx 替换为你实际的掘金文章ID,或者先发布文章后再更新链接

方式 3:克隆到本地

# 克隆仓库
git clone https://github.com/Lee985-cmd/algorithm-30days

# 进入目录
cd algorithm-30days

# 用你喜欢的编辑器打开
code .  # VS Code

💻 代码示例

所有代码都可以在 code/ 目录找到。

示例:快速排序

/**
 * 快速排序 - 原地排序版
 */
function quickSort(arr) {
    function partition(low, high) {
        const pivot = arr[high];
        let i = low;
        
        for (let j = low; j < high; j++) {
            if (arr[j] < pivot) {
                [arr[i], arr[j]] = [arr[j], arr[i]];
                i++;
            }
        }
        
        [arr[i], arr[high]] = [arr[high], arr[i]];
        return i;
    }
    
    function sort(low, high) {
        if (low < high) {
            const pivotIndex = partition(low, high);
            sort(low, pivotIndex - 1);
            sort(pivotIndex + 1, high);
        }
    }
    
    sort(0, arr.length - 1);
    return arr;
}

// 测试
console.log(quickSort([3, 6, 8, 10, 1, 2, 1]));
// 输出:[1, 1, 2, 3, 6, 8, 10]

运行测试:

node code/quickSort.js

更多代码示例请查看 code/ 目录。


📊 学习效果

传统学习方式 vs 本教程

维度 传统学习 本教程
学习时间 3-6个月 30天
掌握程度 30-50% 80-90%
面试通过率
学习方式 零散 系统化
实践机会 多(120+练习)
趣味性 枯燥 游戏化

👥 适合人群

✅ 强烈推荐

  • 编程初学者,想打好基础
  • 准备面试的求职者
  • 想转行做开发的非科班同学
  • 工作1-3年,想提升算法能力的开发者
  • 喜欢系统化学习的人

⚠️ 不太适合

  • 已经是算法高手(可以看后面的高级部分)
  • 只想速成,不愿意花30天时间
  • 不喜欢动手写代码

🎯 如何使用

建议的学习流程

每天 1-2 小时:

  1. 阅读主教程(30-40分钟)

    • 理解概念
    • 看代码示例
    • 做笔记
  2. 完成配套资源(30-40分钟)

    • 学习检查清单
    • 练习题
    • 查看答案详解
    • 看思维导图
  3. 费曼输出(10-20分钟)

    • 用自己的话解释
    • 录视频或写文章
    • 讲给别人听
  4. 打卡记录(5分钟)

    • 勾选完成的任务
    • 记录学习心得
    • 明天计划

学习建议

一定要做的:

  • 按顺序学习,不要跳着学
  • 每天都要动手写代码
  • 完成费曼输出
  • 做练习题
  • 坚持30天

不要做的:

  • 只看不动手
  • 跳过练习题
  • 三天打鱼两天晒网
  • 急于求成

💬 学员反馈

"跟着这个教程学了2周,面试终于过了算法关!"
— 小明,前端开发 ⭐⭐⭐⭐⭐

"费曼学习法真的有用,以前看不懂的现在都能讲给别人听了!"
— 小红,应届生 ⭐⭐⭐⭐⭐

"配套的练习题很有用,不是那种看完就忘的教程。"
— 小李,后端开发 ⭐⭐⭐⭐⭐


🤝 贡献指南

欢迎贡献!你可以:

  1. 修正错误

    • 发现错别字或代码错误
    • 提 Issue 或 PR
  2. 改进内容

    • 补充更清晰的解释
    • 添加更多示例
    • 优化代码
  3. 翻译

    • 翻译成其他语言
  4. 分享经验

    • 分享你的学习心得
    • 提供改进建议

如何贡献

# 1. Fork 本仓库

# 2. 创建分支
git checkout -b feature/your-feature

# 3. 提交修改
git commit -m "Add: 你的修改说明"

# 4. 推送到分支
git push origin feature/your-feature

# 5. 提交 Pull Request

📝 License

本项目采用 MIT License - 详见 LICENSE 文件

你可以:

  • ✅ 免费使用
  • ✅ 修改
  • ✅ 分发
  • ✅ 商用

你需要:

  • 保留版权声明

🙏 致谢

感谢以下资源和灵感来源:


📮 联系方式

  • GitHub: @Lee985-cmd
  • 邮箱: 376384019@qq.com
  • 公众号: Lee 的成长日记(扫码关注,获取更多算法干货与学习心得)

公众号二维码


⭐ Star History

Star History Chart


🚀 立即开始

准备好了吗?从 Day 1 开始吧!

👉 Day 1: 为什么要学算法?

如果觉得这个项目有用,请:

  • ⭐ Star 本仓库
  • 🔄 Fork 并分享给朋友
  • 💬 提 Issue 或 Discussion
  • 📢 在社交媒体推广

你的支持是我持续更新的动力! 💪


最后记住:

"算法学习是一场马拉松,不是短跑。重要的不是你跑得有多快,而是你能坚持多久。"

30天后,遇见更好的自己! 🎉


⚖️ 免责声明

  • 本项目中的所有算法实现和教程内容均为原创,仅供学习参考
  • 提到的 LeetCode 题目仅作为练习参考,题目版权归 LeetCode 所有
  • 推荐书籍(如《算法导论》)的版权归原出版社所有
  • 如有任何版权问题,请联系我删除相关内容
  • 使用本教程学习产生的任何后果,作者不承担责任

About

数据结构与算法 - 30天挑战营

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors