数据结构与算法总结(完结)

极客时间算法学习之后开始跟着花花酱刷题。大概从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 数组

  1. 15 3sum
  2. 169 Majority Element
  3. 41 Missing Positive

2.2链表

  1. 141 LinkedListCycle I
  2. 23 Merge k sorted lists

2.3 栈

  1. 20 Valid Parentheses
  2. 32 Longest Valid Parentheses
  3. 150 Evaluate Reverse Polish Notatio

2.4 队列

  1. 641 Design Circular Deque
  2. 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树

  1. 只包含 a~z 这 26 个英文字母的 Trie 树

3 算法题目整理

3.1 排序

1 排序:实现归并排序、快速排序、插入排序、冒泡排序、选择排序
2 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素
3 还要记得有桶排序、计数排序

3.2 二分

  1. 35 Search Insert Position
    相似题目:34、704、981
    tag:upper_bound
  2. 33 Search in Rotated Sorted Array
    相似题目:81、153、154、162、852
    tag:rotated;peek
  3. 69 Sqrt(x)
    tag:upper_bound
  4. 74 Search a 2D Matrix
  5. 875 Koko Eating Bananas
    相似题目:1011
    tag:guess ans and check
  6. 4 Median of Two Sorted Arrays
  7. 378 Kth Smallest Element in a Sorted Matrix
    相似题目:668
    tag:k-th+matrix 对数组中的值做二分,也有guess and check的感觉
  8. 719 Find K-th Smallest Pair Distance
    相似题目:786
    tag:k-th+two pointers

3.3 搜索(BFS、DFS)/回溯

  1. 17 Letter Combinations of a Phone Number
    相似题目:39、40、77、78、90、216
    tag:组合
  2. 46 Permutations
    相似题目:47、784、943、996
    tag:排列
  3. 22 Generate Parentheses
    相似题目 301
    tag:DFS
  4. 37 Sudoku Solver
    相似题目:51 52
    tag:DFS
  5. 79 Word Search
    相似题目:212
    tag:DFS
  6. 127 Word Ladder
    相似题目:126、752、818
    tag:BFS
  7. 542 01 Matrix
    相似题目:675、934
    tag:BFS
  8. 698 Partition to K Equal Sum Subsets
    相似题目:93、131、241、282、842
    tag:排列

3.4 哈希

3.5 贪心

3.6 分治

  1. 169 Majority Element
  2. 153 Find Minimum in Rotated Sorted Array
    相似题目 154
  3. 912 Sort and Array
  4. 315 Count of Smaller Numbers After Self

3.7 动态规划

  1. 70 Climbing Stairs 相似题目:746、1137
  2. 303 Range Sum Query – Immutable 相似题目:1218
  3. 53 Maximum Subarray 相似题目:121
  4. 62 Unique Paths 相似题目:63、64、120、174、931、1210
  5. 85 Maximal Rectangle 相似题目:221、304、1277
  6. 198 House Robber 相似题目:213、309、740、790、801
  7. 279 Perfect Squares 相似题目:
  8. 139 Word Break 相似题目 140、818
  9. 300 Longest Increasing Subsequence 相似题目:673、1048
  10. 最小路径和(详细可看 @Smallfly 整理的 Minimum Path Sum)
  11. 编程实现莱文斯坦最短编辑距离
  12. 编程实现查找两个字符串的最长公共子序列

3.8 字符串匹配

  1. 344 Reverse String
  2. 151 Reverse Words in a String
  3. 8 String to Integer (atoi)
  4. KMP
  5. AC自动机
    AC介绍
    AC自动机就是多模式匹配的kmp,文章没有详细看,抄来的代码跑一跑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis学习(1):【持久化框架】Mybatis简介与原理

从这篇博文开始我们学习一下Mybatis,希望大家提出宝贵的建议。 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abati…

UML类图解义

小菜:“对了,我时常在一些技术书中看到这些类图表示,简单的还看得懂,有些标记我很容易混淆。要不你给我讲讲吧。” 大鸟:“这个其实多看多用就熟悉了。我给你举一个例子,来看这样一幅图,其中就包…

mybatis学习(2):基本设置和核心配置

1创建一个简单的java项目 2导入jar包 建立一个lib包 链接:https://pan.baidu.com/s/1eJ7xXF2qvUbgde2T--Sphg 提取码:3bgy 加入junit的包 右键项目---build path---add library 4导入配置文件 log4j.properties ### ### log4j.rootLogger ERROR,s…

laravel框架的数据库链接

刚才配置了数据库链接代码之后发现怎么也连不上,是因为有两个文件 .env和.envexample文件,注意配置参数要在.env文件里面,比如我用mysql的话配置.env里 这么一段: DB_CONNECTIONmysqlDB_HOSTlocalhostDB_PORT8889DB_DATABASEshopD…

2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊

2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊2899紫金矿业和1862澳华黄金一直都是我的重仓品种啊http://cache.tianya.cn/publicforum/content/develop/1/135210.shtml 转载于:https://www.cnblogs.com/cy163/archive/2008/02/17/1071029.html

mybatis学习(3):映射文件的配置和接口创建

配置文件 db.properties jdbc.drivercom.oracle.jdbc.OracleDriver jdbc.urljdbc:oracle:thin:127.0.0.1:1521:wiicare jdbc.usernamewiicare jdbc.passwordMdsd123 log4j.properties ### ### log4j.rootLogger ERROR,stdout### ¡ ### log4j.appender.stdout org.ap…

AlarmManager使用注意事项

在使用AlarmManager实现闹钟需要注意的是,intent和pendingintend的context如果是activity,那么当activity回收之后,context对象则不能被AlarmManager用于发送广播打开service之类等等,即使是applicationContext也只是进程唯一&…

Oracle9i OCM认证实践课考试的一些说明

当我考过Oracle9i的OCP之后,某一天在网上闲转,忽然发现在Oracle公司的这个金牌的认证项目之上又推出了一个新的更高一级的认证,它便是OCM,全称是Oracle Certified Master,我把它译为Oracle认证的大师。在网上这方面的信息很少&…

mybatis学习(4):工具类和实体类的创建

配置文件 db.properties jdbc.drivercom.oracle.jdbc.OracleDriver jdbc.urljdbc:oracle:thin:127.0.0.1:1521:wiicare jdbc.usernamewiicare jdbc.passwordMdsd123 log4j.properties ### ### log4j.rootLogger ERROR,stdout### ¡ ### log4j.appender.stdout org.ap…

WinAPI: midiOutGetID - 获取输出设备 ID

//声明: midiOutGetID(hMidiOut: HMIDIOUT; {获取输出设备句柄}lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:}MMSYSERR_INVALHANDLE 5; {设备句柄无效}//举例:转载于:https://www.cnblogs.com/del/archive/2008/02/22/1…

mybatis学习(5):安装 SQL Server installsharewowdir命令值无效的问题

[错误消息] INSTALLSHAREDWOWDIR 命令行值无效。请确保指定的路径有效,并且与 INSTALLSHAREDDIR 路径不同。 INSTALLSHAREDDIR 和 INSTALLSHAREDWOWDIR 参数具有相同的值“D:\soft\sql”。但是,这些参数必须具有不同的值。请为其中一个参数指定不同的值…

windows下解决pip安装出错问题

今天使用pip install xxx突然报错,找了好久全是在linux上的解决方案,好不容易找到一个windows下的解决方案,所以将他记录下来。 解决方案: cmd中敲命令:python -m ensurepip 得到pip的setuptools 然后就可以用&#xf…

检测ID卡的输入或者是其它卡的输入。

由于ID卡或者是其它的一些不同类型的卡,它们只是负责模拟键盘的录入,但是,它们在录入的时候没有一个很好的标识位可以让我们知道当前输入的是客户手工录入的字符串还是ID卡读入的字符串,我相信,很多人在做这样的开发时…

mybatis学习(6):IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

一、创建 Java 项目: 1、打开 IDEA 软件,点击界面上的 Create New Project 2、出现以下界面,选中 Java,然后选择 JDK,最后点击 Next,进行下一步(我的是 jdk1.8) 3、这里是选择生成项…

解决(?)问题

问题从来都没有真正的解决,所谓的解决问题只不过是在将一个问题转移成另一个问题而已 转载于:https://www.cnblogs.com/shadow-abyss/p/11248042.html

asp.net中获得客户端的IP地址

因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅. 通常我们都通过下面的代码获得IP: string ip System.Web.HttpContext.Current.Request.UserHostAddress; 或 string ip System.Web.HttpCon…

第一百五十期:Java程序员必备:异常的十个关键知识点

总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油。异常是指阻止当前方法或作用域继续执行的问题。比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常。 前言 总结了Java异常十个关键知识点…

学用 TStringGrid [1] - ColCount、RowCount、Cells

本例功能:1、获取 StringGrid 的行数、列数;2、给单元赋值.运行效果图://示例代码: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, Grids;typeTForm1 class(TForm)StringGrid1: TStringG…

第六章 设计程序架构 之 设计实现WebSocket策略

1. 概述 传统网页的通信方式是请求-响应模式,每次请求-响应都是新的连接。连接的建立和断开也是需要消耗资源的。 WebSocket是基于TCP协议,实现单个连接上的双向通信。 本章内容包括: 异步读写字符串和二进制数据、选择连接丢失策略、何时使用…

第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?

除了编程语言之外,要想找一份计算机相关的工作,还需要很多其他方面的技能。最近,来自美国求职公司 Indeed 的一份报告显示:在全美工作技能需求中,数据库语言 SQL、编程语言 Java 分列前两位。 除了编程语言之外&#x…