数据结构/LeetCode
文章平均质量分 84
本人学习Java数据结构和算法的总结
燕双嘤
我赌你枪里没有子弹
展开
-
LeetCode:动态规划(跳跃游戏,路径问题,序列问题)
45,46,47,55,62,64,70,91,115,120,121,122,128,198,213,300,343,392,416,673,724,746,873,926,1143原创 2018-09-10 20:44:25 · 1021 阅读 · 1 评论 -
LeetCode:操作系统,贪心算法,TreeMap
51,52,53,93,146,205,322,399,621,860,911,1122,1146,1488,1562,1648原创 2018-09-03 17:42:45 · 1100 阅读 · 0 评论 -
LeetCode:前缀和,前缀问题
14,88,1392原创 2018-09-14 21:37:47 · 1396 阅读 · 0 评论 -
LeetCode:常用类库
539原创 2019-06-21 18:03:55 · 795 阅读 · 0 评论 -
LeetCode:二进制,重复元素,位运算
1,3,34,35,36,65,67,102,136,137,169,190,191,201,231,318,338,387,483,1290,1356原创 2018-09-10 20:18:59 · 1261 阅读 · 2 评论 -
LeetCode:图论(BSF&DFS,最短路径,染色问题,拓扑结构,并查集)
13,24,79,85,127,130,200,210,256,269,329,417,444,542,547,684,695,733,752,785,797,815,841,947,953,994,997,1042,1091,1557,1901原创 2019-03-02 22:26:46 · 3269 阅读 · 2 评论 -
LeetCode:递增序列,字典树
96,98,208,219,220,334,421,456,648,676,677,720,820,1855原创 2019-06-21 18:01:24 · 1002 阅读 · 0 评论 -
LeetCode:二叉树,二叉搜索树,层次遍历,N叉树,完全二叉树,平衡二叉树
33,98,100,101,102,103,104,108,110,112,113,116,117,124,129,173,199,226,230,235,236,297,404,426,429,437,450,513,515,538,543,572,589,617,653,700,701,814,919,968,1038,1367,1376原创 2018-09-03 18:44:13 · 876 阅读 · 0 评论 -
LeetCode:栈和优先队列
3,20,22,32,40,155,215,232,295,347,373,394,451,658,692,703,735,844,946,973,1249原创 2019-03-20 21:55:18 · 1061 阅读 · 1 评论 -
LeetCode:链表(合并,反转,删除,排序,设计)
2,19,21,23,24,25,61,82,83,86,138,141,142,143,148,160,203,206,328,341,430,445,707,708,876原创 2018-09-05 11:29:17 · 716 阅读 · 1 评论 -
LeetCode:数组(排列组合,二分查找I,二分查找II,实际问题)
33,34,35,38,39,40,46,47,58,60,61,66,77,78,81,90,153,154,377,436,528,540,611,784,826,875,976,981,1137,1283,1292,1300,1482,1498,1539,1552,1574,1712,1760,1818,1838,1870,1898原创 2018-10-08 21:08:59 · 525 阅读 · 2 评论 -
LeetCode:数组(遍历数组,数组操作,区间问题,数学运算)
1,11,15,16,18,26,42,45,48,51,53,54,56,57,59,76,81,84,135,139,152,167,189,209,218,228,238,239,283,349,350,435,452,494,525,560,633,713,729,910,977,986,1184,1331,1508,1588,1706,1886原创 2018-09-14 21:00:53 · 1165 阅读 · 2 评论 -
LeetCode:字符串(字符串操作,特殊串,替换操作,异位词)
3,5,6,8,28,30,43,49,72,76,97,125,131,132,205,234,242,273,290,383,409,415,424,438,459,524,567,583,647,680,763,839,1790,2131原创 2018-09-07 08:45:15 · 687 阅读 · 1 评论 -
LeetCode:数学运算,奇怪数字,等差数列,规律数列,函数曲线
50,64,69,73,91,202,233,264,274,275,279,367,399,400,441,989,1201,1281,1502,1630,1822原创 2018-09-18 19:52:05 · 2728 阅读 · 0 评论 -
LeetCode:程序员面试金典
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88原创 2018-09-12 18:33:40 · 845 阅读 · 1 评论 -
LeetCode:剑指Offer(专项突击版2)
90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119原创 2019-06-21 18:02:05 · 563 阅读 · 0 评论 -
LeetCode:剑指Offer(专项突击版1)
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89原创 2019-06-21 18:02:39 · 2580 阅读 · 0 评论 -
LeetCode:剑指Offer
4,5,6,7,9,10,11,12,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,34,35,37,38,39,41,42,43,44,48,49,50,52,53,54,55,57,58,59,62,64,67,68原创 2019-07-19 19:57:26 · 7323 阅读 · 3 评论 -
LeetCode:秒杀题 II
12,13,68,73,80,289,299,344,509,557,807,1046,1480原创 2019-06-21 17:58:54 · 982 阅读 · 0 评论 -
LeetCode:秒杀题 I
10,36,58,66,74,88,118,119,151,162,187,222,240,278,303,304,346,374,380,382,384,389,496,503,556,566,704,706,709,739,744,852,896,897,933,1232,1309,1346,1351,1385,1413,1491,1523,1545,1572,1603,1608,1672,1678,1768,1779,1797,1845,1894原创 2019-02-27 22:22:58 · 1529 阅读 · 1 评论 -
数据结构:排序算法
排序(Sort)是指将数据元素按照指定关键字值的大小递增(或递减)次序重新排列。数据元素:又称记录,是数据的基本单位,由数据项构成。 数据序列(datalist):是待排序的数据元素的有限集合。 关键字项:用来标识记录的数据项。 关键字:记录中关键字项的值称为该记录的关键字。算法分析排序算法 最好 平均 最坏 是否稳定 直接插入排序 O(n) O(n²) O(n²) 稳定 二分插入排序 o(n²) o(n²) .原创 2018-07-06 11:19:57 · 2837 阅读 · 0 评论 -
数据结构:查找算法
1,顺序查找(线性查找)顺序查找:即用逐一比较的办法顺序查找关键字,这显然是最直接的办法。基本实现:从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和待找的值K相比较,若相等,则查找成功,若整个表扫描完毕,仍末找到关键字等于K的元素,则查找失败。顺序查找的存储结构要求:顺序查找既适用于顺序表,也适用于链表。若用顺序表,查找可从前往后扫描,也可从后往前扫描,但若采用单链表,则只能从前往后扫描。 另外,顺序查找的表中元素可以是无序的。private static boolea原创 2018-07-19 15:53:04 · 1074 阅读 · 0 评论 -
数据结构:图(图的遍历、最小生成树、最短路径)
1,图的遍历和树的遍历类似,图的遍历也是从某个顶点出发,沿着某条搜索路径对图中所有顶点各作一次访问。若给定的图是连通图,则从图中任一顶点出发顺着边可以访问到该图中所有的顶点,但是,在图中有回路,从图中某一顶点出发访问图中其它顶点时,可能又会回到出发点,而图中可能还剩余有顶点没有访问到,因此,图的遍历较树的遍历更复杂。我们可以设置一个全局型标志数组visited来标志某个顶点是否被访问过,未访问的值为0,访问过的值为1。根据搜索路径的方向不同,图的遍历有两种方法:深度优先搜索遍历(DFS)和广度优先搜索原创 2018-12-06 17:23:40 · 5304 阅读 · 3 评论 -
数据结构:图(图的抽象数据类型、图的表现和实现)
1,图及其抽象数据类型图(Graph)是一种较线性表和树更为复杂的数据结构:在线性表中,数据元素之间仅有线性关系,即每个数据元素只有一个直接前驱和一个直接后继。 在树形结构中,数据元素 之间有着明显的层次关系,虽然每一层上的数据元素可能和下一层中多个元素(孩子) 相关,但只能和上一层中一个元素(双亲)相关。 而在图形结构中,结点之间 的关系可以是任意的,任意两个数据元素之间都可能相关。1.1,图的基本概念图G(Graph)是由顶点(Vertex)集合V和顶点间的关系集合E(边Edg原创 2021-03-23 14:10:59 · 2934 阅读 · 0 评论 -
数据结构:构造二叉树(前跟中跟,中跟后跟)
先从前序的第一个结点开始,其为根节点,然后在中序中找到该元素,一分为二,中序左边为左子树,右边为右子树,然后从前序中找第二个元素为根结点左子树的根,然后重复上面这个过程,发现出现NULL,跳到右子树。但是,如果在先根遍历中加入反映兄弟结点间的左右次序的信息(如以“^”标明空子树),则可以唯一确定一颗二叉树。当一个结点的左右孩子链都已建立,则以当前结点为根的一棵子树就已建立,返回上一层结点。二叉树的广义表表示语法如下图,其中元素表示结点,“^”表示空子树。,则创建一个结点,该结点的左孩子结点元素是。原创 2018-12-04 11:24:54 · 4535 阅读 · 2 评论 -
数据结构:二叉树的前、中、后序遍历(递归和非递归)
先根遍历,即第一次遇到的结点就开始打印。一直遍历左子树,直到为空,然后开始递归右子树,直到为空。【思路】由于需要确定当前结点被访问过两次,此时需要额外一个结点来储存之前访问的结点。现遍历子树,等左右子树都遍历完后,在打印结点。跟之前的类比一下很容易想到。2,先根遍历-非递归。4,中根遍历-非递归。6,后根遍历-非递归。............原创 2018-11-30 10:56:49 · 2050 阅读 · 2 评论 -
数据结构:树,二叉树,其他树,红黑树,堆
树是数据元素(结点)之间具有层次关系的非线性结构。在树结构中,根结点没有前驱结点;除跟以外的结点只有一个前驱结点,有零至多个后继结点。树结构是一类重要的非线性结构。树结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。.........原创 2021-03-18 20:50:17 · 466 阅读 · 1 评论 -
数据结构:数组、矩阵、广义表
1,数组1.1,数组的定义数组是数据结构的基本结构形式,它是一种顺序式的结构,数组是存储同一类型数据的数据结构。数组是顺序存储的随机存取结构,数组是其他数据结构实现顺序存储的基础。使用数组时需要定义数组的大小和存储数据的数据类型。数组分为一维数组和多维数组。数组的维数是由数组下标的个数确定的:一个下标称为一维数组。 一个下标以上的数组称为多维数组。 从这个意义上讲,确定了对于数组的一个下标总有一个相应的数值与之对应的关系;或者说数组是有限个同类型数据元素组成的序列。数组是原创 2021-03-15 19:59:51 · 365 阅读 · 0 评论 -
数据结构:Josephus环,单链表逆转,括号匹配,后缀表达式求值,素数环,汉诺塔
数据结构:Josephus环、单链表逆转、括号匹配、后缀表达式求值、素数环、汉诺塔原创 2018-09-10 18:36:24 · 1456 阅读 · 1 评论 -
数据结构:字符串匹配(Brute-Force,KMP-看毛片)
【题目】给定两个字符串s1,s2,判断s2是否是s1的字串,若存在则返回在s2在s1中的起始下标,不存在则返回-1。KMP算法是一种字符串匹配的算法,我们假设模式串为pattern,源字符串为text。KMP算法其特点就是提前对模式串pattern建立一个next表,然后只需要遍历一遍text串就可以,而对于pattern的遍历匹配则是跟据next串做跳转。KMP算法的优越之处在于它在匹配失败后会通过合理的跳转,避免重复的字符匹配。原创 2018-09-13 07:07:14 · 1253 阅读 · 0 评论 -
数据结构:栈和队列
栈和队列是在程序设计中被广泛使用的两种特殊的线性表,它们的特殊性在于对栈和队列的插入和删除操作被限制为只能在表的两端(或一端)进行:L=(a1,a2,a3,…,ai,…,an)线性表:在表的任意位置进行插入和删除: 栈:只能在表尾进行插入和删除:“后进先出”。 队列:只能在表尾进行插入,而在表头删除:“先进先出”。和线性表相比,栈和队列的插入和删除操作受更多的约束和限定,故又称为操作受限(或限定性)的线性表结构。1,栈1.1,栈的抽象数据类型栈(Stack)是一种特殊的线性表.原创 2021-03-13 17:08:11 · 563 阅读 · 0 评论 -
数据结构:线性表(顺序表和链表)
线性表是其组成元素间,具有线性关系的一种线性结构,对线性表的基本操作主要有获得元素值、设置元素值、遍历、插入、删除、查找、替换和排序等,在线性表的任意位置都可以进行插入和删除操作。可以采用顺序存储结构和链式存储结构表示线性表。线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。1,线性表的抽象结构线性表是指n (n>=0)个类型相同的数据元素a0,a1,...an-1组成的有限序列,其一般描述为:LinearList=.原创 2021-03-11 10:59:05 · 1424 阅读 · 0 评论 -
数据结构:基本概念
1,数据结构的基本概念1.1,数据结构软件设计是计算机学科的的核心内容之一。软件设计时要考虑的首要问题是数据的表示、组织和处理方法。数据结构是软件设计的重要理论和实践基础。数据结构设计和算法设计是软件系统设计的基础和核心。“数据结构+算法=程序设计”。数据:是描述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合的统称。数据包括:数值数据、非数值数据(字符串、图形、图像、音频、视频)。数据元素:表示一个事物的一组数据称为一个数据元素(结点、顶点、记录).原创 2018-12-16 12:00:17 · 2070 阅读 · 0 评论