├── README.md ├── leetcode_index.md ├── 剑指_index.md ├── 机器学习&深度学习文章总结_index.md └── 经典算法题_index.md /README.md: -------------------------------------------------------------------------------- 1 | # Algorithm-ALL-IN-ONE 2 | -------------------------------------------------------------------------------- /leetcode_index.md: -------------------------------------------------------------------------------- 1 | ## 数组 Array 2 | 3 | > [M【0054】给一个矩阵,按顺时针螺旋输出所有数字](https://www.jianshu.com/p/070a16dff572);关联【0059】 4 | 5 | > [M【0059】给一个数字n,按顺时针螺旋顺序将1~n^2保存到n*n矩阵中](https://www.jianshu.com/p/070a16dff572);关联【0054】 6 | 7 | > [M【0073】给一个矩阵,将0所在的行和列元素都置为0](https://www.jianshu.com/p/a5421e7b1c35) 8 | 9 | > [M【0074】给一个矩阵,行和列的元素都是升序排列,查找是否存在一个数](https://www.jianshu.com/p/a5421e7b1c35) 10 | 11 | > [M【0238】给一个数组,求这样的结果:每个位置的值是其他位置的乘积,但不能使用除法](https://www.jianshu.com/p/926d7fdb6deb) 12 | 13 | > [M【0289】给一个01矩阵,每个位置看成一个细胞。1为活细胞,0为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞遵循四条生存定律,求根据当前01矩阵状态计算下一个01矩阵状态](https://www.jianshu.com/p/9f23b48f2a28) 14 | 15 | > [M【0442】给一个数组,数字出现一次或两次,找出出现两次的数字](https://www.jianshu.com/p/16158df915b1) 16 | 17 | > [M【0485】给一个01数组,求最长连续1的子数组长度](https://www.jianshu.com/p/d69a8ea7e660);关联【1004】 18 | 19 | > [M【0495】提莫攻击艾希,给一个攻击的时间序列和中毒时效,求艾希总中毒时长](https://www.jianshu.com/p/8461b5372f98) 20 | 21 | > [M【0519】给一个矩阵,初始化为0。如果调用flip函数,随机将0的位置置为1,返回矩阵坐标;如果调用reset函数,重置矩阵为全0](https://www.jianshu.com/p/9918e1ffc79f) 22 | 23 | > [M【0769】将一个数组划分成多个块,每块排序后能形成完整的升序,求最大划分块数](https://www.jianshu.com/p/6df26e588226) 24 | 25 | > [E【0832】给一个01矩阵,先翻转每一行的数字,再将每个数字进行01翻转](https://www.jianshu.com/p/4c05f8a7b4fb) 26 | 27 | > [M【0835】上下左右移动图片A之后与B重叠,计算重叠区域的1最多有多少](https://www.jianshu.com/p/8461b5372f98) 28 | 29 | > [M【0885】在R行C列的矩阵上,从(r0, c0)面朝东面开始按顺时针按螺旋状行走,访问此网格中的每个位置](https://www.jianshu.com/p/070a16dff572) 30 | 31 | > [M【0915】给一个数组,将其划分成两部分,使得左边所有数小于等于右边所有数,返回划分位置](https://www.jianshu.com/p/2b0cd430024f) 32 | 33 | > [M【0950】按递增顺序显示卡牌](https://www.jianshu.com/p/d06d9b9426a5) 34 | 35 | > [M【0969】煎饼排序,即给一个数组,每次翻转前k个元素,最后使数组有序,求翻转的k序列](https://www.jianshu.com/p/d06d9b9426a5) 36 | 37 | > [M【1007】给两个数组,通过翻转对应位置数字,使其中一个数组全等,求最少翻转次数](https://www.jianshu.com/p/4c05f8a7b4fb) 38 | 39 | > [M【1011】给一个数组,在D天之内按顺序运输完所有包裹,求船的最少容量](https://www.jianshu.com/p/926d7fdb6deb) 40 | 41 | > [M【1031】给一个数组,求这个数组的两个不重叠子数组的最大和](https://www.jianshu.com/p/16158df915b1) 42 | 43 | ## 字符串 String 44 | 45 | > [M【0468】给一个字符串,判断其是否是有效的IPv4地址或者是IPv6地址](https://www.jianshu.com/p/e0253c53fbd2) 46 | 47 | > [M【0537】两个复数相乘](https://www.jianshu.com/p/ef9ce096d935) 48 | 49 | > [E【0709】实现lower()方法,即将一个字符串转化为小写](https://www.jianshu.com/p/20705e572882) 50 | 51 | > [M【0809】给一个字符串S和一个单词数组,S是数组中的单词通过重复某些字符至少三次得到的,找到符合的单词](https://www.jianshu.com/p/a6fe22582a20) 52 | 53 | > [M【0816】给一个字符串S,通过用逗号和小数点将S分割为两部分,得到不同的组合坐标(x,y),要求x、y中的数字都是合法的,返回所有合法坐标](https://www.jianshu.com/p/a6fe22582a20) 54 | 55 | > [M【0848】给一个字符串S和数组shifts,将S中前i+1个字母移位shifts[i]次,返回移位后的字符串](https://www.jianshu.com/p/e0253c53fbd2) 56 | 57 | > [M【0890】给一个字典和模式串,从字典中找到和模式串相同类型的单词](https://www.jianshu.com/p/ef9ce096d935) 58 | 59 | > [M【1016】给一个字符串S和数字N,求1~N是否能组成S中的所有二进制子串](https://www.jianshu.com/p/ef9ce096d935) 60 | 61 | > [M【1003】给一个有效字符串 "abc",定义有效字符串 V,V 划分成 X 和 Y 两部分,并且满足 X + "abc" + Y,求给一个字符串,看它是否是有效的](https://www.jianshu.com/p/d6ab9254a87e) 62 | 63 | > [M【1023】给一个字典和模式串,从字典中找出模糊匹配模式串的所有单词,除了模式串本身,其他匹配的字符都是小写字母](https://www.jianshu.com/p/d6ab9254a87e) 64 | 65 | ## 排序 Sort 66 | 67 | > [M【0056】给一个区间集合,合并所有重叠区间](https://www.jianshu.com/p/ea5ec725c584) 68 | 69 | > [M【0378】给一个n*n矩阵,每行每列都是升序,求第k小元素](https://www.jianshu.com/p/4669ded857de) 70 | 71 | > [M【0451】给一个字符串,按照字母次数降序排列](https://www.jianshu.com/p/4669ded857de) 72 | 73 | > [M【0539】给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示](https://www.jianshu.com/p/20705e572882) 74 | 75 | > [M【0767】给一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同](https://www.jianshu.com/p/60bfa654fd1f) 76 | 77 | > [M【0833】字符串的查找与替换,即给一个字符串S、索引数组indexes、源数组sources、目标数组targets,根据indexes[i]找到字符串中的sources[i],将其替换成targets[i]](https://www.jianshu.com/p/20705e572882) 78 | 79 | > [M【0869】给一个数字,将数字重新排序(不能有前导 0),如果排序后的数字是2的幂次方,返回True,否则返回False](https://www.jianshu.com/p/1ba87c3f6712) 80 | 81 | > [M【0945】给一个数组,每次移动可以把一个数字增加1,最后使得数组元素都不同,求最小移动次数](https://www.jianshu.com/p/105ab7e57769) 82 | 83 | > [M【0962】最大宽度坡。给一个数组A,坡是元组(i, j),其中i [M【0973】给一些坐标,求距离原点(0, 0)前K小距离(欧氏距离)的那些坐标](https://www.jianshu.com/p/be14c1d88269) 86 | 87 | > [M【1090】给两个对应的数组values和labels,从values中选一个子集S满足|S|<=num_wanted,并且子集S中各个标签的数目总满足<=use_limit,求返回子集S的最大可能的和](https://www.jianshu.com/p/d6e204ef7d26) 88 | 89 | ## 堆 / 优先队列 Heap 90 | 91 | > [M【0347】给一个整数数组,返回最常出现的k个元素](https://www.jianshu.com/p/4669ded857de);关联【0692】 92 | 93 | > [M【0659】给一个递增序列,将其划分成若干个子序列,判断每个子序列是否长度大于3且连续](https://www.jianshu.com/p/bcd857e8b711) 94 | 95 | > [M【0692】给一个单词数组,返回最常出现的k个单词,如果次数相同,返回字典序较小的](https://www.jianshu.com/p/4669ded857de);关联【0347】 96 | 97 | > [M【0767】给一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同](https://www.jianshu.com/p/60bfa654fd1f) 98 | 99 | > [M【0973】给一些坐标,求距离原点(0, 0)前K小距离(欧氏距离)的那些坐标](https://www.jianshu.com/p/be14c1d88269) 100 | 101 | > [M【1090】给两个对应的数组values和labels,从values中选一个子集S满足|S|<=num_wanted,并且子集S中各个标签的数目总满足<=use_limit,求返回子集S的最大可能的和](https://www.jianshu.com/p/d6e204ef7d26) 102 | 103 | ## 栈 104 | 105 | > [M【0227】实现一个基本计算器,即给一个只包括+、-、*、/、数字和空格的字符串,计算结果](https://www.jianshu.com/p/e0253c53fbd2) 106 | 107 | > [M【0739】给一个温度列表,重新生成一个列表:对应位置是需要再等待多久温度才会升高超过该日的天数](https://www.jianshu.com/p/be14c1d88269);关联【1019】 108 | 109 | > [M【0856】给一个平衡括号字符串,给了三个规则,计算平衡字符串的分数](https://www.jianshu.com/p/d6ab9254a87e) 110 | 111 | > [M【0962】最大宽度坡。给一个数组A,坡是元组(i, j),其中i [M【1003】给一个有效字符串 "abc",定义有效字符串 V,V 划分成 X 和 Y 两部分,并且满足 X + "abc" + Y,求给一个字符串,看它是否是有效的](https://www.jianshu.com/p/d6ab9254a87e) 114 | 115 | > [M【1019】求给一个链表,返回一个列表,列表的对应位置是链表中当前结点的下一个更大的结点的值](https://www.jianshu.com/p/b41883870bf7);关联【0739】 116 | 117 | > [M【1081】返回字符串text中按字典序排列最小的子序列,该子序列包含 text中所有不同字符一次](https://www.jianshu.com/p/e0253c53fbd2) 118 | 119 | ## 哈希表 Hash Table 120 | 121 | > [E【0001】两个数的和。给一个数组和目标target,求数组中两个数的和为target的数的索引](https://www.jianshu.com/p/380a788d9461);关联【0167】 122 | 123 | > [M【0049】给一个字符串数组,按照字母异序词分组。字母异位词指字母相同,但排列不同的字符串](https://www.jianshu.com/p/20705e572882) 124 | 125 | > [M【0454】给四个数组 A、B、C、D,分别选一个数,求四个数的和为0的数目](https://www.jianshu.com/p/380a788d9461);关联【0001】 126 | 127 | > [M【0523】给一个非负整数数组和整数k,判断数组是否含有连续子数组,其大小至少为2,总和为k的倍数,即总和为n*k,其中n也是一个整数](https://www.jianshu.com/p/91b0a04dea0e);关联【0525、0560、0974】 128 | 129 | > [M【0525】给一个01数组,求含有相同数量的0和1的最长连续子数组的长度](https://www.jianshu.com/p/91b0a04dea0e);关联【0523】 130 | 131 | > [M【0560】给一个数组,求连续子数组和为k的总数](https://www.jianshu.com/p/91b0a04dea0e);关联【0523、0974】 132 | 133 | > [M【0609】在系统中找到重复文件进行分组](https://www.jianshu.com/p/d6ab9254a87e) 134 | 135 | > [M【0648】给一个词典和句子,词典中保存着词根,将句子中的所有继承词(在词根后面加字符)用对应词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它](https://www.jianshu.com/p/5134396fd5d7) 136 | 137 | > [M【0817】给一个链表和数组,数组是链表元素的子集。求数组中联通数量](https://www.jianshu.com/p/b41883870bf7) 138 | 139 | > [M【0833】字符串的查找与替换,即给一个字符串S、索引数组indexes、源数组sources、目标数组targets,根据indexes[i]找到字符串中的sources[i],将其替换成targets[i]](https://www.jianshu.com/p/20705e572882) 140 | 141 | > [M【0869】给一个数字,将数字重新排序(不能有前导 0),如果排序后的数字是2的幂次方,返回True,否则返回False](https://www.jianshu.com/p/1ba87c3f6712) 142 | 143 | > [M【0916】有两个单词数组A和B,B中每个单词b的每个字符b[i]可能包括在A中的某个单词a里面。找到满足B中每个单词b的每个字符b[i]都在A中的某个单词a中的这样的单词a](https://www.jianshu.com/p/20705e572882) 144 | 145 | > [M【0939】最小面积矩形。给一个坐标列表,计算这些坐标可以组成的最小矩形面积,其中矩形平行于x轴和y轴](https://www.jianshu.com/p/bacd2334fd85) 146 | 147 | > [M【0974】给一个数组,求连续子数组之和可以被K整除的总数](https://www.jianshu.com/p/91b0a04dea0e);关联【0523、0560】 148 | 149 | > [M【1048】最长字符串链。给一个单词列表,找一个词链,使得词链后一个单词由前一个单词增加一个字符得到,求最长词链长度](https://www.jianshu.com/p/bacd2334fd85) 150 | 151 | > [M【1072】给一个01矩阵,通过翻转列使得相等的行数(一行全0或全1)最多](https://www.jianshu.com/p/5134396fd5d7) 152 | 153 | > [M【1171】给一个链表,反复删去链表中总和为0的连续结点组成的序列,直到不存在这样的序列为止](https://www.jianshu.com/p/b7c53a62f6df);关联【0523、0560】 154 | 155 | ## 双指针 Two Pointers 156 | 157 | > [M【0015】三个数的和。给一个数组,找出所有满足a+b+c=0的结果](https://www.jianshu.com/p/380a788d9461);关联【0016】 158 | 159 | > [M【0016】给一个数组和一个目标target,求三个数的和最接近target的值](https://www.jianshu.com/p/380a788d9461);关联【0015】 160 | 161 | > [M【0018】给一个数组和target,找到所有满足四个数的和为target的结果](https://www.jianshu.com/p/380a788d9461);关联【0015】 162 | 163 | > [E【0026】给一个排序好的数组,通过修改原数组,使得前K个元素都不同,返回K,要求使用O(1)的空间](https://www.jianshu.com/p/e1185a604f01);关联【0080】 164 | 165 | > [M【0075】颜色排序。给一个012数组,0、1、2分别代表红色、白色和蓝色,将数组升序排序。要求只能遍历数组一次,并使用常量级的空间](https://www.jianshu.com/p/105ab7e57769) 166 | 167 | > [M【0080】给一个排序好的数组,通过修改原数组,使得每个元素最多只出现两次,把这些数(假设为K个)依次排到数组最前面,返回K,要求使用O(1)的空间](https://www.jianshu.com/p/e1185a604f01);关联【0026】 168 | 169 | > [E【0141】判断一个链表是否有环](https://www.jianshu.com/p/bb4a8deaafda);关联【0142、0287】 170 | 171 | > [M【0142】给一个链表,判断是否有环。如果有环,找到环的起始位置](https://www.jianshu.com/p/b7c53a62f6df);关联【0141】 172 | 173 | > [E【0167】给一个排序好的数组,求数组中两个数的和为target的数的索引](https://www.jianshu.com/p/380a788d9461);关联【0001】 174 | 175 | > [M【0287】给一个数组,只有一个数字重复了两次及以上,找到这个数字](https://www.jianshu.com/p/ef469d4a871b);关联【0141】 176 | 177 | > [M【0524】给一个字符串s和一个单词数组,找到数组里面最长的单词,该单词可以通过删除s的某些字符来得到](https://www.jianshu.com/p/60bfa654fd1f) 178 | 179 | > [M【0611】给一个数组,求组成有效三角形的个数](https://www.jianshu.com/p/2b0cd430024f) 180 | 181 | > [E【0876】求链表中间的结点,如果链表长度为偶数,返回中间的第二个结点](https://www.jianshu.com/p/b41883870bf7) 182 | 183 | > [M【0881】救生艇问题。给一个重量数组和船容量,一次只能运输两个人,求所需最少船数](https://www.jianshu.com/p/d6e204ef7d26) 184 | 185 | > [M【0946】给pushed和popped两个序列,判断是否pushed序列能够通过 pop操作得到popped序列](https://www.jianshu.com/p/be14c1d88269) 186 | 187 | > [M【0962】最大宽度坡。给一个数组A,坡是元组(i, j),其中i [M【0986】区间列表的交集。给定两个由一些闭区间组成的列表,每个区间列表都是成对不相交的,并且已经排序。返回这两个区间列表的交集](https://www.jianshu.com/p/7570d3daf90c) 190 | 191 | 192 | ## 二分查找 Binary Search 193 | 194 | > [M【0074】给一个矩阵,行和列的元素都是升序排列,查找是否存在一个数](https://www.jianshu.com/p/a5421e7b1c35) 195 | 196 | > [M【0153】给一个按照升序排列的旋转数组,找到旋转有序数组的最小值](https://www.jianshu.com/p/105ab7e57769) 197 | 198 | > [M【0162】寻找峰值。给一个数组,峰值元素是指其值大于左右相邻值的元素,峰值可能有多个,找到其中一个峰值元素对应索引。假设数组前后均为负无穷](https://www.jianshu.com/p/b37bc9046dd0) 199 | 200 | > [M【0497】给一些不重叠的矩阵,从这些不重叠的矩阵中随机采样一个整数点(采样点包括矩阵边界)](https://www.jianshu.com/p/9918e1ffc79f);关联【0528】 201 | 202 | > [M【0528】给一个数组w,其中w[i]代表位置i的权重。写一个函数,可以随机地获取位置i,选取位置i的概率与w[i]成正比](https://www.jianshu.com/p/9918e1ffc79f);关联【0497】 203 | 204 | > [M【0611】给一个数组,求组成有效三角形的个数](https://www.jianshu.com/p/2b0cd430024f) 205 | 206 | ## 数学 Math 207 | 208 | > [M【0031】给一个数组,表示一个排列。求比当前排列大的下一个排列。如果没有则返回最小排列](https://www.jianshu.com/p/b37bc9046dd0) 209 | 210 | > [M【0048】给一个方阵,顺时针旋转90°,不能开辟空间](https://www.jianshu.com/p/f059363e986c) 211 | 212 | > [M【0060】一个从1到n的数组,共有n!个全排列序列,找到第k个全排列序列](https://www.jianshu.com/p/6338d5f20a75) 213 | 214 | > [M【0089】给一个非负整数n,表示二进制数的位数,求一个格雷码序列(格雷码序列中,相邻两个二进制数只有一位不同)](https://www.jianshu.com/p/bcd857e8b711) 215 | 216 | > [E【0121】买卖股票,单买单卖](https://www.jianshu.com/p/4610906371c5);关联【0053、0122、0309、0714、1014】 217 | 218 | > [M【0279】给一个正整数n,将其分解为平方数加法因子,使得分解后的因子最少](https://www.jianshu.com/p/33ff36b6c069);关联【0322】 219 | 220 | > [M【0319】灯泡开关。初始时有n个灯泡关闭,第i轮,每i个灯泡切换一次开关。找出n轮后有多少个亮着的灯泡](https://www.jianshu.com/p/cf6eb55859a2);关联【0672】 221 | 222 | > [M【0343】给一个正整数n,将其分解为若干正整数加法因子,使得分解后的因子乘积最大](https://www.jianshu.com/p/33ff36b6c069) 223 | 224 | > [M【0357】给一个非负整数n,计算各位数字都不同的数字x的个数,其中 0≤x<10^n](https://www.jianshu.com/p/bcd857e8b711) 225 | 226 | > [M【0372】快速幂算法。计算a^bmod1337,a是一个正整数,b是一个非常大的正整数且以数组形式给出](https://www.jianshu.com/p/898b251bec3d) 227 | 228 | > [M【0423】给一个字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字](https://www.jianshu.com/p/22443c4dc84a) 229 | 230 | > [M【0470】用Rand7()实现Rand10()](https://www.jianshu.com/p/9918e1ffc79f) 231 | 232 | > [M【0478】给出圆的半径及圆心坐标,随机生成一个在圆内或圆上的坐标](https://www.jianshu.com/p/9918e1ffc79f) 233 | 234 | > [M【0553】给一个数组,各个数字连除,通过加括号使得除操作的结果最大](https://www.jianshu.com/p/d6ab9254a87e) 235 | 236 | > [M【0593】给四个坐标,判断能否组成一个正方形](https://www.jianshu.com/p/22443c4dc84a) 237 | 238 | > [M【0667】构造一个长度为n的自然序列,这个序列相邻元素差的绝对值的数量为k个](https://www.jianshu.com/p/a1155ba49d3b) 239 | 240 | > [M【0672】灯泡开关2。有n只已经打开的灯泡和4个按钮,每个按钮有不同的切换灯泡的功能。在进行m次未知操作后,返回这n只灯泡可能有多少种不同的状态](https://www.jianshu.com/p/cf6eb55859a2);关联【0319】 241 | 242 | > [M【0738】给一个数字N,找到小于等于N的单调递增数字](https://www.jianshu.com/p/d92aa61203d3) 243 | 244 | > [M【0781】森林中的兔子。每个兔子都有颜色,其中一些兔子(可能全部)告诉你还有多少其他的兔子和自己有相同的颜色,将它们的回答放在answers数组里。返回森林中兔子的最少数量](https://www.jianshu.com/p/1ba87c3f6712) 245 | 246 | > [M【0789】在二维平面上有一个人从原点出发,每次移动一个单位(东南西北)到目标坐标,平面上还有一些鬼每次也移动一个单位到目标坐标。如果人比所有鬼先到目标坐标,则表示逃离鬼,返回 True,否则返回 False](https://www.jianshu.com/p/111162728919) 247 | 248 | > [M【0795】给一个数组,求最大值大于等于L且小于等于R的连续子数组个数](https://www.jianshu.com/p/105ab7e57769) 249 | 250 | > [M【0858】镜面反射。给一个四面都是镜子的正方形房间,除西南角外每个角落都放有一个接受器。墙壁长度为p,一束激光从西南角射出与东墙相遇,入射点到右下角距离为q。返回光线最先遇到接收器编号(保证光线最终会遇到一个接收器)](https://www.jianshu.com/p/1a6115f657be) 251 | 252 | > [M【0923】给一个数组和目标target,求满足i [M【0932】美丽数组,即构造一个长度为N的自然序列,这个序列对于任意的i [M【0991】给X和Y,X每次只能执行乘2或者减1操作,求得到Y所需的最少操作步数](https://www.jianshu.com/p/d92aa61203d3) 257 | 258 | > [M【1006】笨阶乘。给一个正整数N,按照*、/、+、-顺序计算阶乘](https://www.jianshu.com/p/1a6115f657be) 259 | 260 | > [M【1014】给一个数组A,求A[i]+A[j]+i-j的最大值](https://www.jianshu.com/p/f059363e986c);关联【0121】 261 | 262 | > [M【1017】给一个正整数N,返回由若干"0"和"1"组成的字符串,该字符串为N的负二进制(base-2)表示](https://www.jianshu.com/p/111162728919) 263 | 264 | > [M【1053】给一个正整数数组A,返回可在一次交换(交换两数字A[i]和A[j]的位置)后得到的、按字典序排列小于A的最大可能排列](https://www.jianshu.com/p/60bfa654fd1f) 265 | 266 | > [M【1131】绝对值最大表达。给两个数组arr1和arr2,求 |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j| 的最大值。](https://www.jianshu.com/p/898b251bec3d) 267 | 268 | ## 位操作 Bit 269 | 270 | > [M【0078】给一个数组,返回所有的子集](https://www.jianshu.com/p/9f23b48f2a28);关联【0090】 271 | 272 | > [M【0089】给一个非负整数n,表示二进制数的位数,求一个格雷码序列(格雷码序列中,相邻两个二进制数只有一位不同)](https://www.jianshu.com/p/bcd857e8b711) 273 | 274 | > [M【0090】给一个数组,数组中的数字可能有重复,返回所有可能的子集](https://www.jianshu.com/p/9f23b48f2a28);关联【0078】 275 | 276 | ## 滑动窗口 Sliding Window 277 | 278 | > [M【1004】给一个01数组,最多改变其中K个0,求最长连续1的子数组长度](https://www.jianshu.com/p/d69a8ea7e660);关联【0485】 279 | 280 | > [M【1052】生气的书店老板的满意度最大值](https://www.jianshu.com/p/d69a8ea7e660) 281 | 282 | ## 递归 Recursion 283 | 284 | > [M【0024】给一个链表,相邻结点数值两两进行交换,要求不修改结点值且只能操作链表本身](https://www.jianshu.com/p/6cb292a199a8) 285 | 286 | ## 链表 Linked List 287 | 288 | > [M【0024】给一个链表,相邻结点数值两两进行交换,要求不修改结点值且只能操作链表本身](https://www.jianshu.com/p/6cb292a199a8) 289 | 290 | > [M【0061】给一个链表,旋转链表,将链表每个结点向右移动k个位置](https://www.jianshu.com/p/b7c53a62f6df) 291 | 292 | > [M【0082】给一个链表,去除链表中重复的元素,只留下原链表出现过一次的数字。如1->2->2->3变成1->3](https://www.jianshu.com/p/b7c53a62f6df);关联【0083】 293 | 294 | > [E【0083】给一个链表,去除链表中重复的元素。如1->2->2->3变成1->2->3](https://www.jianshu.com/p/b7c53a62f6df);关联【0082】 295 | 296 | > [M【0086】给一个链表和整数x,将小于x的数按位置顺序放在链表左侧,大于等于x的按位置顺序放在右侧](https://www.jianshu.com/p/f65a40185210);关联【0148】 297 | 298 | > [M【0092】给一个链表和区间[m,n],反转区间内的数字](https://www.jianshu.com/p/f65a40185210);关联【0206】 299 | 300 | > [M【0109】给一个有序链表,将其转化为高度平衡的二叉搜索树](https://www.jianshu.com/p/6cb292a199a8) 301 | 302 | > [M【0143】给一个链表,按照L0→Ln→L1→Ln-1→L2→Ln-2→…重新排序](https://www.jianshu.com/p/b7c53a62f6df);关联【0206】 303 | 304 | > [M【0148】给一个链表,对链表排序。要求时间复杂度O(nlogn),空间复杂度O(1)](https://www.jianshu.com/p/f65a40185210);关联【0086】 305 | 306 | > [E【0206】给一个链表,将链表反转](https://www.jianshu.com/p/f65a40185210);关联【0092】 307 | 308 | > [M【0328】给一个链表,将奇数位置的数按位置顺序排在链表前面,偶数位置的数按位置顺序排在链表后面](https://www.jianshu.com/p/6cb292a199a8) 309 | 310 | > [M【0445】给两个链表,将两个链表相加](https://www.jianshu.com/p/6cb292a199a8);关联【0206】 311 | 312 | > [M【0725】给一个链表和整数k,将链表划分成长度尽可能相等的k个连续部分,返回链表列表](https://www.jianshu.com/p/6cb292a199a8) 313 | 314 | ## 树 Tree 315 | 316 | > [M【0109】给一个有序链表,将其转化为高度平衡的二叉搜索树](https://www.jianshu.com/p/6cb292a199a8) 317 | 318 | > [E【0429】给一棵N叉树,层次遍历将每一层的结点保存在列表中](https://www.jianshu.com/p/79ae54445729) 319 | 320 | > [E【0559】给一个N叉树,求最大深度](https://www.jianshu.com/p/79ae54445729) 321 | 322 | > [E【0589】给一个N叉树,将前序遍历的结果保存在列表中](https://www.jianshu.com/p/79ae54445729);关联【0590】 323 | 324 | > [E【0590】是给一个N叉树,将后序遍历的结果保存在列表中](https://www.jianshu.com/p/79ae54445729);关联【0589】 325 | 326 | > [E【0617】合并两棵二叉树,对应节点求和](https://www.jianshu.com/p/4d170b2d6504) 327 | 328 | > [E【0669】给一棵二叉搜索树和一个区间[L,R],通过修剪这棵树,使得所有结点的值在[L,R]中(R>=L)](https://www.jianshu.com/p/79ae54445729) 329 | 330 | > [E【0700】给一棵二叉搜索树(BST),查找给定的结点。结点不存在返回NULL](https://www.jianshu.com/p/3089155996c1) 331 | 332 | > [E【0872】给两棵树,判断它们的叶子序列(从左到右)是否相同](https://www.jianshu.com/p/3089155996c1) 333 | 334 | > [E【0897】给一棵二叉搜索树,将结点按照从小到大重新排列,构造一棵只有右结点的树](https://www.jianshu.com/p/3089155996c1) 335 | 336 | > [E【0938】二叉搜索树区间节点求和](https://www.jianshu.com/p/8b0d2f981b96) 337 | 338 | > [E【0965】给一棵二叉树,判断其是否是单值二叉树(所有结点值都相同)](https://www.jianshu.com/p/3089155996c1) 339 | 340 | > [E【1022】给一个01二叉树,计算从根到叶子所有二进制路径表示的十进制数字的总和](https://www.jianshu.com/p/3089155996c1) 341 | 342 | ## 递归回溯 DFS 343 | 344 | > [M【0039】给一个数组和目标,数组中的数可以使用多次来合成目标,找出所有不同的组合](https://www.jianshu.com/p/9b81085c40f6);关联【0040、0216】 345 | 346 | > [M【0040】给一个数组和目标,数组中的数只能使用一次来合成目标,找出所有不同的组合](https://www.jianshu.com/p/9b81085c40f6);关联【0039、0216】 347 | 348 | > [M【0046】给一个不同整数的集合,返回集合所有的全排列](https://www.jianshu.com/p/bcd857e8b711);关联【0047】 349 | 350 | > [M【0047】给一个不同整数的集合,可能包含重复的数字,返回集合所有的全排列](https://www.jianshu.com/p/bcd857e8b711);关联【0046】 351 | 352 | > [M【0077】求组合数C(n,r)问题,找出所有组合](https://www.jianshu.com/p/9b81085c40f6) 353 | 354 | > [M【0078】给一个数组,返回所有的子集](https://www.jianshu.com/p/9f23b48f2a28);关联【0090】 355 | 356 | > [M【0079】给一个字符矩阵和一个单词,判断单词是否存在字符矩阵中](https://www.jianshu.com/p/6338d5f20a75);关联【0093、0842】 357 | 358 | > [M【0090】给一个数组,数组中的数字可能有重复,返回所有可能的子集](https://www.jianshu.com/p/9f23b48f2a28);关联【0078】 359 | 360 | > [M【0093】给一个数字字符串,返回所有可能的IP地址组合](https://www.jianshu.com/p/6338d5f20a75);关联【0079、0842】 361 | 362 | > [M【0131】给一个字符串,将字符串分割成一些子串,使得所有子串都是回文串,求所有划分的方案数](https://www.jianshu.com/p/6338d5f20a75) 363 | 364 | > [M【0200】求二维矩阵中由 '1' 连通的岛屿个数(上下左右有1视为连通)](https://www.jianshu.com/p/eddac74b64a3);关联【0695】 365 | 366 | > [M【0216】给一个k和n,求出所有k个数之和为n的组合数](https://www.jianshu.com/p/6df26e588226);关联【0039、0040】 367 | 368 | > [M【0416】判断一个数组是否可以划分成两个相等的子集和](https://www.jianshu.com/p/5f0a8a72a50f);关联【0473、0698】 369 | 370 | > [M【0473】火柴拼正方形。给一个表示火柴长度的数组,判断是否可以拼成一个正方形](https://www.jianshu.com/p/3fc77ad6015d);关联【0416、0698】 371 | 372 | > [M【0526】构造一个长度为N的自然序列,满足i整除nums[i]或者nums[i]](https://www.jianshu.com/p/a1155ba49d3b) 373 | 374 | > [M【0695】求二维矩阵中由1连通的最大岛屿面积(上下左右有1视为连通)](https://www.jianshu.com/p/eddac74b64a3);关联【0200】 375 | 376 | > [M【0698】划分成k个相等的子集和。给一个数组和k,将数组划分成k个子集,使得每个子集和相等。如果可以划分,返回True,否则返回False](https://www.jianshu.com/p/3fc77ad6015d);关联【0416、0473】 377 | 378 | > [M【0842】给一个数字字符串,将其划分成斐波那契序列](https://www.jianshu.com/p/6338d5f20a75);关联【0079、0093】 379 | 380 | > [M【1079】活字印刷,即给一个字符串,返回所有非空字母序列的数目](https://www.jianshu.com/p/60bfa654fd1f) 381 | 382 | ## 广度优先遍历 BFS 383 | 384 | > [M【0279】给一个正整数n,将其分解为平方数加法因子,使得分解后的因子最少](https://www.jianshu.com/p/33ff36b6c069);关联【0322】 385 | 386 | > [M【0322】找硬币问题,求需要的最少硬币数](https://www.jianshu.com/p/77c924c7d9b8) 387 | 388 | ## 暴力搜索 Brute Force 389 | 390 | > [M【0056】给一个非负整数,对其中的两个数位最多允许交换一次,返回最大数字](https://www.jianshu.com/p/ea5ec725c584) 391 | 392 | > [M【0926】给一个01字符数组,通过翻转字符01让数组升序,求最少翻转次数](https://www.jianshu.com/p/f059363e986c) 393 | 394 | > [M【0131】给一个字符串,将字符串分割成一些子串,使得所有子串都是回文串,求所有划分的方案数](https://www.jianshu.com/p/6338d5f20a75) 395 | 396 | ## 分治算法 Divide and Conquer 397 | 398 | > [M【0153】给一个按照升序排列的旋转数组,找到旋转有序数组的最小值](https://www.jianshu.com/p/105ab7e57769) 399 | 400 | ## 贪心(贪婪)算法 Greedy 401 | 402 | > [M【0056】给一个非负整数,对其中的两个数位最多允许交换一次,返回最大数字](https://www.jianshu.com/p/ea5ec725c584) 403 | 404 | > [E【0122】买卖股票,多买多卖](https://www.jianshu.com/p/4610906371c5);关联【0121、0309、0714】 405 | 406 | > [M【0392】给两个字符串s和t,判断s是否是t的子序列](https://www.jianshu.com/p/d6e204ef7d26) 407 | 408 | > [M【0406】有打乱顺序的一群人站成一个队列。 每个人由(h, k)表示, h是身高,k是排在这个人前面且身高大于或等于h的人数。编写一个算法重建这个队列](https://www.jianshu.com/p/99253487589d) 409 | 410 | > [M【0435】给一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠](https://www.jianshu.com/p/d92aa61203d3);关联【0452】 411 | 412 | > [M【0452】给一个气球区间的集合,求用最少数量的箭引爆所有气球](https://www.jianshu.com/p/d92aa61203d3);关联【0435】 413 | 414 | > [M【0621】模拟CPU任务分配。给一个数组存储任务A到Z,任务可以以不同顺序进行。对于一个时间间隔,CPU可以执行一个任务或者是闲置。但是,两个同样的任务之间至少需要有n个冷却时间,求所需最少时间](https://www.jianshu.com/p/9f23b48f2a28) 415 | 416 | > [M【0659】给一个递增序列,将其划分成若干个子序列,判断每个子序列是否长度大于3且连续](https://www.jianshu.com/p/bcd857e8b711) 417 | 418 | > [M【0763】给一个字符串,把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段](https://www.jianshu.com/p/99253487589d) 419 | 420 | > [M【0861】给一个01矩阵,通过多次翻转行或列(0变成1、1变成0),最后将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和,返回尽可能高的分数](https://www.jianshu.com/p/99253487589d) 421 | 422 | > [M【0870】给两个大小相等的数组A和B,A相对于B的优势可以用满足A[i]>B[i]的索引i的数目来描述。返回A的任意排列,使其相对于B的优势最大化](https://www.jianshu.com/p/d6e204ef7d26) 423 | 424 | > [M【1094】拼车问题。给一个数组和容量,数组每一项包括人数、上车时间、下车时间,判断是否可以在不超过容量的情况下顺利接送所有乘客](https://www.jianshu.com/p/99253487589d) 425 | 426 | 427 | ## 动态规划 DP 428 | 429 | > [M【0005】求一个字符串的最长回文子串](https://www.jianshu.com/p/e71c5a055d2a);关联【0647】 430 | 431 | > [E【0053】给一个数组,求最大子段和](https://www.jianshu.com/p/05ea5b4870e2);关联 【0121】 432 | 433 | > [M【0064】给一个矩阵,求左上到右下的最小路径和](https://www.jianshu.com/p/32e752fd6b8f);关联【0931】 434 | 435 | > [M【0120】给一个三角形,从顶到下计算最小路径和](https://www.jianshu.com/p/2b0cd430024f) 436 | 437 | > [E【0121】买卖股票,单买单卖](https://www.jianshu.com/p/4610906371c5);关联【0053、0122、0309、0714】 438 | 439 | > [E【0122】买卖股票,多买多卖](https://www.jianshu.com/p/4610906371c5);关联【0121、0309、0714】 440 | 441 | > [M【0139】将一个字符串划分为字典中的单词](https://www.jianshu.com/p/5298f5dbafcb);关联【0300】 442 | 443 | > [M【0300】给一个数组,求最长上升子序列](https://www.jianshu.com/p/81ec65dd5f6b);关联【0139、0368】 444 | 445 | > [M【0309】买卖股票,多买多卖,卖后的下一天不能买](https://www.jianshu.com/p/4610906371c5);关联【0121、0122、0714】 446 | 447 | > [M【0322】找硬币问题,求需要的最少硬币数](https://www.jianshu.com/p/77c924c7d9b8) 448 | 449 | > [M【0338】给一个整数,求小于这个数的二进制数中1出现的次数](https://www.jianshu.com/p/0ae51ef103b5) 450 | 451 | > [M【0368】最大可除子集。给一个包含不同数字的数组,找一个最大的子集,对于子集中的每个元素对(Si,Sj)满足Si%Sj=0或者Sj%Si=0,返回这个子集](https://www.jianshu.com/p/7570d3daf90c);关联【0300】 452 | 453 | > [M【0377】给一个数组和一个目标,求合成目标的不同组合数,与顺序有关](https://www.jianshu.com/p/1e85ed11e039);关联【0518】 454 | 455 | > [M【0416】判断一个数组是否可以划分成两个相等的子集和](https://www.jianshu.com/p/5f0a8a72a50f) 456 | 457 | > [M【0518】找硬币问题,求不同的组合数,与顺序无关](https://www.jianshu.com/p/11a17f63b5d6);关联【0377】 458 | 459 | > [M【0583】给两个单词,每次只能从中删除一个字符,最后两单词相等,求最少删除次数](https://www.jianshu.com/p/a6fe22582a20);关联【0712、0135】 460 | 461 | > [M【0647】求一个字符串的不同回文子串个数](https://www.jianshu.com/p/786aee10a001);关联【0005】 462 | 463 | > [M【0712】给两个字符串,各删除一些字符后使得两个字符串相等,求删除的那些字符的最小ASCll删除和](https://www.jianshu.com/p/f881a4091c8f);关联【0583、1035】 464 | 465 | > [M【0714】买卖股票,多买多卖,有交易费](https://www.jianshu.com/p/4610906371c5);关联【0121、0122、0309】 466 | 467 | > [M【0718】给两个数组,求最长公共子数组](https://www.jianshu.com/p/9f23b48f2a28) 468 | 469 | > [E【0746】有一个数组,每个位置有一个代价,如果走了该位置,可以继向后走1步或2步,求走完这个数组长度的最小爬楼梯代价](https://www.jianshu.com/p/f881a4091c8f) 470 | 471 | > [M【0813】给一个数组,将其划分为K个部分,使得每部分平均值加起来最大](https://www.jianshu.com/p/2b0cd430024f) 472 | 473 | > [M【0873】给一个数组,求最长斐波那契子序列](https://www.jianshu.com/p/8cabab3a1919) 474 | 475 | > [M【0877】有偶数堆石头,两人交替从开始或结束位置拿,求先拿者是否拿得最多](https://www.jianshu.com/p/f881a4091c8f) 476 | 477 | > [M【0898】子数组按位或(|)操作,求不同的结果个数](https://www.jianshu.com/p/99233c4e278e) 478 | 479 | > [M【0926】给一个01字符数组,通过翻转字符01让数组升序,求最少翻转次数](https://www.jianshu.com/p/f059363e986c) 480 | 481 | > [M【0931】给一个方阵,求下降路径最小和](https://www.jianshu.com/p/13167c3c5801);关联【0064】 482 | 483 | > [M【0935】骑士在电话号码盘上跳动,求跳动 N 次产生的拨号次数](https://www.jianshu.com/p/caa2c35321a7) 484 | 485 | > [M【0967】长度为N的数字,求各个数位连续差相同的数字](https://www.jianshu.com/p/c87aa63d3696) 486 | 487 | > [M【0978】求最长湍流子数组,即这个子数组中相邻数值交替大小](https://www.jianshu.com/p/717596665b43) 488 | 489 | > [M【0983】有1-day、7-day、30-day三种票价,给出旅游具体天数,求最低票价](https://www.jianshu.com/p/d4511d0d450a) 490 | 491 | > [M【1024】视频分解成多个重合的片段,求能够完整拼接视频的最少片段的长度](https://www.jianshu.com/p/ca03d88242e1) 492 | 493 | > [M【1027】给一个数字列表,求最长等差子序列的长度](https://www.jianshu.com/p/5dea0fa2efdd) 494 | 495 | > [M【1035】给两个整数数组,按照索引对齐,相同的数用直线连接,求最多有多少条不相交的线](https://www.jianshu.com/p/ef469d4a871b);关联【0583、0712】 496 | 497 | > [M【1048】最长字符串链。给一个单词列表,找一个词链,使得词链后一个单词由前一个单词增加一个字符得到,求最长词链长度](https://www.jianshu.com/p/bacd2334fd85) 498 | 499 | > [M【1094】拼车问题。给一个数组和容量,数组每一项包括人数、上车时间、下车时间,判断是否可以在不超过容量的情况下顺利接送所有乘客](https://www.jianshu.com/p/99253487589d);关联【1109】 500 | 501 | > [M【1109】给一个航班行程,每一项(i, j, k)表示在[i,j]之间预定k个座位。求每一时刻预定的座位数](https://www.jianshu.com/p/105ab7e57769);关联【1094】 502 | 503 | 504 | ## 其他: 505 | > ... 506 | -------------------------------------------------------------------------------- /剑指_index.md: -------------------------------------------------------------------------------- 1 | ## 剑指 offer 题目具有代表性,涉及链表、数组、深搜回溯、字符串、数组、数学、位运算、动态规划等。这里做一个总结: 2 | 3 | > [剑指offer【03~09】](https://www.jianshu.com/p/b933e14922a2) 4 | 5 | > [剑指offer【10~19】](https://www.jianshu.com/p/d448a7d310f6) 6 | 7 | > [剑指offer【20~29】](https://www.jianshu.com/p/030347250601) 8 | 9 | > [剑指offer【30~39】](https://www.jianshu.com/p/7db35a48d82c) 10 | 11 | > [剑指offer【40~49】](https://www.jianshu.com/p/4f4de4edba77) 12 | 13 | > [剑指offer【50~59】](https://www.jianshu.com/p/dcca2c7b40e7) 14 | 15 | > [剑指offer【60~68】](https://www.jianshu.com/p/67a293f1914b) -------------------------------------------------------------------------------- /机器学习&深度学习文章总结_index.md: -------------------------------------------------------------------------------- 1 | ## 这里总结一些机器学习&深度学习的文章,持续更新: 2 | 3 | > [吴恩达 —— 深度学习 Course 1 笔记](https://www.jianshu.com/p/01230b26cec9) 4 | 5 | > [图像识别——突破与应用](https://www.jianshu.com/p/cc70dbbc2a4e) 6 | 7 | > [图像处理之特征提取](https://www.jianshu.com/p/d94e558ebe26) 8 | 9 | > [使用Tensorflow实现一个简单的神经网络](https://www.jianshu.com/p/3d4a9e6977be) 10 | 11 | > [使用Keras实现生成式对抗网络GAN](https://www.jianshu.com/p/f1485a7deb47) 12 | 13 | > [《机器学习实战》总结篇](https://www.jianshu.com/p/69f6efb54a4b) 14 | 15 | > [我分析了2837首歌曲,做了个信息检索与信息抽取系统](https://www.jianshu.com/p/6072e963961c) 16 | 17 | > [一文理解机器学习中的各种熵](https://www.jianshu.com/p/7571d6ce1b1d) 18 | 19 | > [随机森林(RF)、梯度提升决策树(GBDT、也叫多重累加回归树(MART))、XGBoost](https://www.jianshu.com/p/a7c23f0c3fd7) 20 | 21 | > [《统计学习方法》读书笔记](https://www.jianshu.com/p/0ac78b1c1531) 22 | 23 | > [生成式对抗网络 GAN](https://www.jianshu.com/p/f2fd1ae29784) 24 | 25 | > [图像修复论文整理](https://www.jianshu.com/p/70fe40346704) 26 | -------------------------------------------------------------------------------- /经典算法题_index.md: -------------------------------------------------------------------------------- 1 | ## 这里总结一些经典算法题,持续更新: 2 | 3 | > [阿里巴巴2020暑期实习笔试题](https://www.jianshu.com/p/c30e065fd156) 4 | 5 | > [今日头条2019夏令营笔试编程题](https://www.jianshu.com/p/96ec5a200dff) 6 | 7 | > [判断一棵满二叉树是否为二叉搜索树](https://www.jianshu.com/p/69238a7da023) 8 | 9 | > [素数(质数)筛选法模板](https://www.jianshu.com/p/d1aa69f008fa) 10 | 11 | > [搜索与回溯算法模板及其应用](https://www.jianshu.com/p/76cff89d077f) 12 | 13 | > [二分查找及其变形与Python的bisect模块的关系](https://www.jianshu.com/p/741c3d29a1ff) 14 | 15 | > [01-背包、完全背包、多重背包及其相关应用](https://www.jianshu.com/p/7b60dfc8d1bd) 16 | 17 | > [【DP】花瓶插花求美学最大值](https://www.jianshu.com/p/a990148ebad3) 18 | 19 | > [建楼问题](https://www.jianshu.com/p/e9ca90effc5f) 20 | 21 | > [Python实现十大经典排序算法](https://www.jianshu.com/p/bbbab7fa77a2) 22 | 23 | > [KMP 算法](https://www.jianshu.com/p/752eae219bea) 24 | 25 | > [球面均匀取点](https://www.jianshu.com/p/9f3763a93b6f) 26 | 27 | > [从M走到N最少步数](https://www.jianshu.com/p/231222570700) 28 | 29 | > [三个数的和小于等于k](https://www.jianshu.com/p/44076e9d1bf1) 30 | 31 | > [最长01相等子串](https://www.jianshu.com/p/e3afd0045c16) 32 | 33 | > [最小方差划分](https://www.jianshu.com/p/1851ee8fb546) 34 | 35 | > [最大子数组差](https://www.jianshu.com/p/b86e00b98597) 36 | 37 | --------------------------------------------------------------------------------