今天推荐一个Github资源,该主题是中文LeetCode解题思路,让你完美应对公司笔试!
LeetCode简介
LeetCode收录了许多互联网公司的算法题目,被称为刷题神器。
资源内容
- 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现。
- 第二部分是对于数据结构与算法的总结
- 第三部分是 anki 卡片, 将 leetcode 题目按照一定的方式记录在 anki 中,方便大家记忆。
- 第四部分是计划, 这里会记录将来要加入到以上三个部分内容
算法组成
- 基础技巧:分治、二分、贪心
- 排序算法:快速排序、归并排序、计数排序
- 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
- 图论:最短路径、最小生成树
- 动态规划:背包问题、最长子序列
数据结构
- 数组与链表:单 / 双向链表
- 栈与队列
- 哈希表
- 堆:最大堆 / 最小堆
- 树与图:最近公共祖先、并查集
- 字符串:前缀树(字典树) / 后缀树
互联网公司面试中经常考察的问题类型总结
![77d10ecc7869b378971ab45ed696c35d.png](https://i-blog.csdnimg.cn/blog_migrate/257e8fb0e80e0390cf905b682010d842.jpeg)
互联网公司面试中经常考察的问题类型总结(图片来自LeetCode)
解题思路解析举例
回溯法解题:
![414f623456c36ee150be3f1cf915ddb3.png](https://i-blog.csdnimg.cn/blog_migrate/18f58a2a419041d2c2605d8e201a3d5a.jpeg)
回溯法解题思路
解题思路目录
资源从简单、中等、困难三个层次进阶讲解,让你步步理解。总结了数据结构和算法
![b96884cddd33d027c87e3588e81cf5bd.png](https://i-blog.csdnimg.cn/blog_migrate/be652369194f20b6b0695b352164e257.jpeg)
简单难度
![f4cee5dc2fe69a5950dca9c7bf7022b3.png](https://i-blog.csdnimg.cn/blog_migrate/51a2140b799331a91f1fd9db86af726f.jpeg)
中等难度
![c68c8603ecc1ed135700d9c3f548f07e.png](https://i-blog.csdnimg.cn/blog_migrate/a8aaec310e09e4def4343827ab001a03.jpeg)
困难难度和数据结构与算法总结
解题思路详细举例
每一道题都给出有题目LeetCode地址、题目描述、题目思路、以及动画讲解、关键点解析。
![d08f7885b031fb9b12ca2672c4004e6b.png](https://i-blog.csdnimg.cn/blog_migrate/80d673f9505166efcabeff13e0131ff6.jpeg)
题目地址和题目描述举例
![270ec6b052a8d66ee60db46c09942dd5.png](https://i-blog.csdnimg.cn/blog_migrate/c35814c7ac5564e1c8165bdab8d62669.jpeg)
题目思路举例
![7bc000699ae9cd4327a1774073ae9bb7.gif](https://i-blog.csdnimg.cn/blog_migrate/a343ad7a846f192bf0ed550608095ece.gif)
动画思路讲解
![5cad270929d9654cb2f831de90a11597.png](https://i-blog.csdnimg.cn/blog_migrate/e8ba0a7099490b12ababa54a2208ccd4.jpeg)
关键点解析
代码
/* * @lc app=leetcode id=20 lang=javascript * * [20] Valid Parentheses * * https://leetcode.com/problems/valid-parentheses/description/ * * algorithms * Easy (35.97%) * Total Accepted: 530.2K * Total Submissions: 1.5M * Testcase Example: '"()"' * * Given a string containing just the characters '(', ')', '{', '}', '[' and * ']', determine if the input string is valid. * * An input string is valid if: * * * Open brackets must be closed by the same type of brackets. * Open brackets must be closed in the correct order. * * * Note that an empty string is also considered valid. * * Example 1: * * * Input: "()" * Output: true * * * Example 2: * * * Input: "()[]{}" * Output: true * * * Example 3: * * * Input: "(]" * Output: false * * * Example 4: * * * Input: "([)]" * Output: false * * * Example 5: * * * Input: "{[]}" * Output: true * * *//** * @param {string} s * @return {boolean} */var isValid = function(s) { let valid = true; const stack = []; const mapper = { '{': "}