数据结构与算法总结(完结)
极客时间算法学习之后开始跟着花花酱刷题。大概从4月份开始的。从今天开始(2020-8-24)开始做总结,复习一下已经刷过的题目。到目前为止leetcode刷题323道。
2020/8/24 完成题目整理,下一步是将每个题目都加上超链接。这个超链接尽可能都指向csdn的博客。
2020/10/23 完成12个题目完成了散列表。进度有点蜗速。大多数题目不能做到看一眼就知道解法,仿佛之前做的全忘记了。但是一看答案,就回想起当时自己做题的情景了。继续。
2020/11/5 完成二叉树、跳表、字符串部分。二叉树部分有些代码没写,只是看了看。跳表好早就想动手写一写。字符串部分也是好早就想综合复习一下。
2020/11/14完成了图的部分。数据结构部分的习题完成。开始算法部分的习题。
2020/11/30完成了二分。
2020/12/18 回溯算法刷起来相对简单一些,hard题目需要再刷一次
2020/12/24 回溯算法刷完
2021/1/2 动态规划刷完。发现在处理字符串的动态规划问题的还是会有些理解不了的地方。本文章更新完毕。
文章目录
- 1刷题原则
- 2 数据结构题目整理
- 2.1 数组
- 2.2链表
- 2.3 栈
- 2.4 队列
- 2.5 散列表
- 2.6 二叉树
- 2.7 堆
- 2.8 跳表
- 2.9 图
- 2.10 Trie树
- 3 算法题目整理
- 3.1 排序
- 3.2 二分
- 3.3 搜索(BFS、DFS)/回溯
- 3.4 哈希
- 3.5 贪心
- 3.6 分治
- 3.7 动态规划
- 3.8 字符串匹配
1刷题原则
根据花花酱建议,梳理出以下结论。
要刷多少题
1 每个类型 10-20,总共200-300题
如何刷题
1 同类型题目一起刷
2 看代码很重要,看至少3-5种不同实现
3 第一遍:5分钟想不出来就看答案;第二遍:尝试不看答案完整实现,一道题目不超过60min;第三遍:尝试快速实现,15-20min实现不了就看答案
4 完整的手写代码,增强肌肉记忆
5 培养代码风格
2 数据结构题目整理
根据刷题原则这是我第二次刷题。其实算上以前断断续续的,算三刷也不为过。
这次题目整理会把之前在极客时间算法题目中的课后题目和这次刷的题目一起整理一下。这部分整理数据结构的题目。
2.1 数组
- 15 3sum
- 169 Majority Element
- 41 Missing Positive
2.2链表
- 141 LinkedListCycle I
- 23 Merge k sorted lists
2.3 栈
- 20 Valid Parentheses
- 32 Longest Valid Parentheses
- 150 Evaluate Reverse Polish Notatio
2.4 队列
- 641 Design Circular Deque
- 239 Sliding Window Maximum
2.5 散列表
实现一个基于链表法解决冲突问题的散列表
实现一个 LRU 缓存淘汰算法
2.6 二叉树
实现一个二叉查找树,并且支持插入、删除、查找操作
实现查找二叉查找树中某个节点的后继、前驱节点
实现二叉树前、中、后序以及按层遍历
Invert Binary Tree
Maximum Depth of Binary Tree
Validate Binary Search Tree
Path Sum
2.7 堆
实现一个小顶堆、大顶堆(堆结构描述)、优先级队列
实现堆排序利用优先级队列
合并 K 个有序数组
求一组动态数据集合的最大 Top K
2.8 跳表
跳表的实现(参考小灰)
2.9 图
实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法
实现图的深度优先搜索、广度优先搜索
实现 Dijkstra 算法、A* 算法
实现拓扑排序的 Kahn 算法、DFS 算法
2.10 Trie树
- 只包含 a~z 这 26 个英文字母的 Trie 树
3 算法题目整理
3.1 排序
1 排序:实现归并排序、快速排序、插入排序、冒泡排序、选择排序
2 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素
3 还要记得有桶排序、计数排序
3.2 二分
- 35 Search Insert Position
相似题目:34、704、981
tag:upper_bound - 33 Search in Rotated Sorted Array
相似题目:81、153、154、162、852
tag:rotated;peek - 69 Sqrt(x)
tag:upper_bound - 74 Search a 2D Matrix
- 875 Koko Eating Bananas
相似题目:1011
tag:guess ans and check - 4 Median of Two Sorted Arrays
- 378 Kth Smallest Element in a Sorted Matrix
相似题目:668
tag:k-th+matrix 对数组中的值做二分,也有guess and check的感觉 - 719 Find K-th Smallest Pair Distance
相似题目:786
tag:k-th+two pointers
3.3 搜索(BFS、DFS)/回溯
- 17 Letter Combinations of a Phone Number
相似题目:39、40、77、78、90、216
tag:组合 - 46 Permutations
相似题目:47、784、943、996
tag:排列 - 22 Generate Parentheses
相似题目 301
tag:DFS - 37 Sudoku Solver
相似题目:51 52
tag:DFS - 79 Word Search
相似题目:212
tag:DFS - 127 Word Ladder
相似题目:126、752、818
tag:BFS - 542 01 Matrix
相似题目:675、934
tag:BFS - 698 Partition to K Equal Sum Subsets
相似题目:93、131、241、282、842
tag:排列
3.4 哈希
3.5 贪心
3.6 分治
- 169 Majority Element
- 153 Find Minimum in Rotated Sorted Array
相似题目 154 - 912 Sort and Array
- 315 Count of Smaller Numbers After Self
3.7 动态规划
- 70 Climbing Stairs 相似题目:746、1137
- 303 Range Sum Query – Immutable 相似题目:1218
- 53 Maximum Subarray 相似题目:121
- 62 Unique Paths 相似题目:63、64、120、174、931、1210
- 85 Maximal Rectangle 相似题目:221、304、1277
- 198 House Robber 相似题目:213、309、740、790、801
- 279 Perfect Squares 相似题目:
- 139 Word Break 相似题目 140、818
- 300 Longest Increasing Subsequence 相似题目:673、1048
- 最小路径和(详细可看 @Smallfly 整理的 Minimum Path Sum)
- 编程实现莱文斯坦最短编辑距离
- 编程实现查找两个字符串的最长公共子序列
3.8 字符串匹配
- 344 Reverse String
- 151 Reverse Words in a String
- 8 String to Integer (atoi)
- KMP
- AC自动机
AC介绍
AC自动机就是多模式匹配的kmp,文章没有详细看,抄来的代码跑一跑。
数据结构与算法总结(完结)相关推荐
- 【数据结构与算法】完结
导语:截止到11月9日,我已完成对C++的数据结构与算法的学习,前后历时约1个月时间.现已对数据结构与算法有了基本的了解,不得不说,数据结构知识很多,而且很是考验思维能力,后面还需要通过大量的做题来深 ...
- 数据结构和算法,到底有多重要?
每年金三银四都是招聘季,今年虽然有疫情影响,但相信也还是有不少人出来面试.我发现很多候选人,聊起架构.框架侃侃而谈,但一写代码,就暴露真实水平.说白了,还是基本功不够扎实. 在我看来,不管你是什么语言 ...
- JavaScript数据结构与算法——链表详解(下)
在JavaScript数据结构与算法--链表详解(上)中,我们探讨了一下链表的定义.实现原理以及单链表的实现.接下来我们进一步了解一下链表的其他内容. 1.双向链表 双向链表实现原理图: 与单向链表不 ...
- JavaScript数据结构与算法——链表详解(上)
注:与之前JavaScript数据结构与算法系列博客不同的是,从这篇开始,此系列博客采用es6语法编写,这样在学数据结构的同时还能对ECMAScript6有进一步的认识,如需先了解es6语法请浏览ht ...
- JavaScript数据结构与算法——队列详解(下)
接下来会借助本人另一篇文章JavaScript数据结构与算法--队列详解(上)中实现的队列类及其方法实现一个应用. 配对问题 需求分析:在一个文件中保存着一份男女混合的数据,名称前以B开头表示男士,以 ...
- JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用
1.上篇回顾: 上篇我们实现了一个列表类,并添加了一些属性,实现了比较多的方法,本文章将与大家一起使用列表实现一个图书借阅查询系统.需要使用JavaScript数据结构与算法--列表详解(上)中写好的 ...
- JavaScript数据结构与算法——列表详解(上)
列表是一组有序的数据,每个数组中的数据项称为元素.数组相关知识不够了解的伙伴可以阅读本人上篇博客在JavaScript中,列表的元素可以是任意数据类型.列表中可以保存不定数量的元素,实际使用时元素的数 ...
- JavaScript数据结构与算法 基础
- 栈 1.栈的应用场景 场景一:十进制转二进制 后出来的余数反而要排到前面 把余数依次入栈,就可以实现倒序输出 场景二:有效的括号 越靠前的左括号,对应的左括号越靠前. 左括号入栈,右括号出栈,最后 ...
- 【数据结构与算法】详解什么是栈,并用代码手动实现一个栈结构
本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...
- 数据结构与算法笔记:哈希表——力扣389
原题: 给定两个字符串 s 和 t ,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 思路: 首先咱们抛开编程知识,就当它是咱们日常 ...
最新文章
- 15.1-15.3 FTP,使用vsftpd搭建FTP服务
- cursor的moveToNext()与moveToFirst()
- [转] 用Firebug调试JavaScript
- 【转】你应该了解的基础和2017测试行业的趋势
- 如何在Node.js(Javascript)中等待,我需要暂停一段时间?
- em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展
- 找call写call_如何将Google Call Widget添加到任何网页
- Ubuntu16.04下实时监控CPU/GPU内存的使用情况
- intellij idea rearrange code
- RedHat_Linux环境下防火墙配置初级入门
- web安全的学习路线
- 银河麒麟服务器v10 sp2安装fio磁盘IO检测工具
- 亚马逊卖家培训返校季爆单技巧
- c++哈利波特编程代码
- 保密容量【Secrecy Capacity】
- 般若波罗蜜多心经——背过最好了
- html让背景图铺满整个页面
- 箭头函数与普通函数,以及使用场景
- 2022管理类联考真题试卷不含答案-文都管联院
- UI设计之【android 仿微信、QQ聊天,带表情,可翻页,带翻页拖动缓冲】