/LeetCodeAlgorithm

学习算法,LeetCode刷题,建议经典书籍《算法导论》《算法4》,使用C++和Python语言实现算法,提高算法效率。Algorithm + DataStructure = Programming。

Primary LanguageC++

algorithms Logo

Wei Li on LeetCode


算法理论基础

  • 《算法导论》和《算法4》
  • 时间复杂度和空间复杂度权衡,时间复杂度的提升是以空间复杂度为代价的
  • 仔细观察,LeetCode 上对每一次代码的提交的 执行时间 && 消耗内存
  • 效率 = 算法效率 + 编程语言效率 + 计算机硬件效率
  • 大O符号 (Big O notation),又称为渐进符号,是用于描述函数渐近行为的数学符号
  • 计算机语言有两大特性:生产效率 && 运行效率
  • C++ 运行效率比 Python 高;Python 生产效率比 C++ 高

LeetCode 剑指 Offer

LeetCode 分类刷题

[数组] https://leetcode-cn.com/tag/array/problemset/

[字符串] https://leetcode-cn.com/tag/string/problemset/

[贪心] https://leetcode-cn.com/tag/greedy/problemset/

[双指针] https://leetcode-cn.com/tag/two-pointers/problemset/

[哈希表] https://leetcode-cn.com/tag/hash-table/problemset/

[动态规划] https://leetcode-cn.com/tag/dynamic-programming/problemset/


Reference

LeetCode 101: A LeetCode Grinding Guide (C++ Version)


C++ & Python 实现 LeetCode 算法题

贪心策略

双指针

二分查找

排序算法

搜索算法

动态规划

分治策略

数学问题

位运算操作

数据结构(C++)

字符串

指针-链表

指针-树

指针-图

复杂的数据结构——并查集


Coding Standard

  • Google style for CPP

  • Google style for Python

  • 命名一定有一套规范,尽量与普遍的规范一致

  • 算法或者数据结构的编码实现

    • 首先要弄懂算法或者数据结构的基本原理
    • 然后针对使用的编程语言进行思考
    • 最后动手开始编码

命名约定

  • 变量名,全部小写,尽量英文单词,做到见名知意,单词之间使用下划线分隔
  • 函数名,首字母大写,尽量英文单词,单词之间使用下划线分隔,小驼峰命名法
  • 类名,首字母大写,尽量英文单词,单词之间不需要使用下划线分隔,大驼峰命名法
  • 文件名,全部小写,尽量英文单词,做到见名知意,单词之间使用下划线分隔
  • 在此中可能使用一些常见的算法的缩写以及约定俗成的写法, 例如,梯度下降算法 GD,不需要的变量 _

About Author

掌中星辰转日月,手心苍穹天外天。

                  ——云主宰苍穹

Stay Hungry, Stay Foolish.

                  ——Steve Jobs