截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接:​​https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ​提取码:6666



大家好,我叫博哥,喜欢编程,尤其是喜欢算法,沉迷其中不能自拔,4年多的时间坚持在公众号上写算法题解,总共输出了

600多道题,其中不乏一些经典题型,都是以图文结合的方式,让算法变的不那么枯燥,通过这些文章,可以让你轻松入门。今天闲着没事就把之前写的一部分算法题整理出来,方便大家阅读,如果你觉得不错的话还可以点击收藏。

「可以看下部分系列文章:」



动态规划相关算法

​598,动态规划解目标和​

​588,动态规划解分割等和子集​

​587,最大的以1为边界的正方形​

​576,动态规划解最长公共子串​

​573,动态规划解单词拆分​

​572,动态规划解分割回文串 III​

​570,动态规划解回文串分割 IV​

​568,动态规划解最后一块石头的重量 II​

​559,动态规划解不相交的线​

​557,动态规划解戳气球​

​553,动态规划解分割回文串 II​

​552,动态规划解统计全为1的正方形子矩阵​

​548,动态规划解最长的斐波那契子序列的长度​

​543,剑指 Offer-动态规划解礼物的最大价值​

​540,动态规划和中心扩散法解回文子串​

​530,动态规划解最大正方形​

​529,动态规划解最长回文子序列​

​522,俄罗斯套娃信封问题​

​517,最长回文子串的3种解决方式​

​515,动态规划解买卖股票的最佳时机含手续费​

​493,动态规划解打家劫舍 III​

​492,动态规划和贪心算法解买卖股票的最佳时机 II​

​490,动态规划和双指针解买卖股票的最佳时机​

​486,动态规划解最大子序和​

​477,动态规划解按摩师的最长预约时间​

​465. 递归和动态规划解三角形最小路径和​

​430,剑指 Offer-动态规划求正则表达式匹配​

​423,动态规划和递归解最小路径和​

​413,动态规划求最长上升子序列​

​411,动态规划和递归求不同路径 II​

​409,动态规划求不同路径​

​407,动态规划和滑动窗口解决最长重复子数组​

​395,动态规划解通配符匹配问题​

​376,动态规划之编辑距离​

​370,最长公共子串和子序列​



回溯算法

​603,回溯算法解划分为k个相等的子集​

​594,回溯算法解含有重复数字的全排列 II​

​593,经典回溯算法题-全排列​

​590,回溯算法解正方形数组的数目​

​575,回溯算法和DFS解单词拆分 II​

​551,回溯算法解分割回文串​

​537,剑指 Offer-字符串的排列​

​520,回溯算法解火柴拼正方形​

​498,回溯算法解活字印刷​

​491,回溯算法解将数组拆分成斐波那契序列​

​478,回溯算法解单词搜索​

​451,回溯和位运算解子集​

​450,什么叫回溯算法,一看就会,一写就废​

​442,剑指 Offer-回溯算法解二叉树中和为某一值的路径​

​420,剑指 Offer-回溯算法解矩阵中的路径​

​391,回溯算法求组合问题​

​446,回溯算法解黄金矿工问题​

​448,组合的几种解决方式​



贪心算法

​604,贪心算法解优势洗牌-田忌赛马问题​

​600,贪心算法解救生艇问题​

​516,贪心算法解按要求补齐数组​

​505,分发糖果(贪心算法解决)​

​501,贪心算法解分发饼干​

​489,柠檬水找零​



DFS和BFS相关算法题

​589,DFS和BFS解从根到叶的二进制数之和​

​586,BFS和DFS解层数最深叶子节点的和​

​580,BFS和DFS解二叉树的堂兄弟节点​

​574,DFS和BFS解单词拆分​

​566,DFS解目标和问题​

​532,BFS解打开转盘锁​

​531,BFS和动态规划解完全平方数​

​507,BFS和DFS解二叉树的层序遍历 II​

​473,BFS解单词接龙​

​470,DFS和BFS解合并二叉树​

​455,DFS和BFS解被围绕的区域​

​453,DFS和BFS解求根到叶子节点数字之和​

​445,BFS和DFS两种方式解岛屿数量​

​422,剑指 Offer-使用DFS和BFS解机器人的运动范围​

​417,BFS和DFS两种方式求岛屿的最大面积​



双指针相关问题

​597,双指针解验证回文字符串 Ⅱ​

​549,滑动窗口解可获得的最大点数​

​542,滑动窗口解最小覆盖子串​

​539,双指针解删除有序数组中的重复项​

​538,剑指 Offer-和为s的连续正数序列​

​527,两个数组的交集 II​

​514,双指针解替换后的最长重复字符​

​497,双指针验证回文串​

​466. 使用快慢指针把有序链表转换二叉搜索树​

​398,双指针求无重复字符的最长子串​

​397,双指针求接雨水问题​

​396,双指针求盛最多水的容器​

​447,双指针解旋转链表​

​449,快慢指针解决环形链表​



二叉树相关算法

​591,二叉树的垂序遍历​

​582,DFS解二叉树剪枝​

​564,二叉树最大宽度​

​563,N叉树的最大深度​

​561,二叉搜索树中第K小的元素​

​547,叶子相似的树​

​545,二叉搜索树的范围和​

​544,剑指 Offer-平衡二叉树​

​510,将有序数组转换为二叉搜索树​

​503,二叉搜索树中的众数​

​488,二叉树的Morris中序和前序遍历​

​485,递归和非递归两种方式解相同的树​

​483,完全二叉树的节点个数​

​474,翻转二叉树的多种解决方式​

​471,二叉搜索树中的插入操作​

​464. BFS和DFS解二叉树的所有路径​

​458,填充每个节点的下一个右侧节点指针 II​

​457,二叉搜索树的最近公共祖先​

​456,解二叉树的右视图的两种方式​

​444,二叉树的序列化与反序列化​

​441,剑指 Offer-二叉搜索树的后序遍历序列​

​440,剑指 Offer-从上到下打印二叉树 II​

​439,剑指 Offer-从上到下打印二叉树​

​435,剑指 Offer-对称的二叉树​

​434,剑指 Offer-二叉树的镜像​

​433,剑指 Offer-树的子结构​

​414,剑指 Offer-重建二叉树​

​403,验证二叉搜索树​

​401,删除二叉搜索树中的节点​

​400,二叉树的锯齿形层次遍历​

​399,从前序与中序遍历序列构造二叉树​

​388,先序遍历构造二叉树​

​387,二叉树中的最大路径和​

​375,在每个树行中找最大值​

​374,二叉树的最小深度​

​373,数据结构-6,树​

​372,二叉树的最近公共祖先​

​367,二叉树的最大深度​



链表相关算法

​596,删除排序链表中的重复元素 II​

​595,删除排序链表中的重复元素​

​554,反转链表 II​

​502,分隔链表的解决方式​

​463. 判断回文链表的3种方式​

​462. 找出两个链表的第一个公共节点​

​461. 两两交换链表中的节点​

​460. 快慢指针解环形链表 II​

​459. 删除链表的倒数第N个节点的3种方式​

​432,剑指 Offer-反转链表的3种方式​

​431,剑指 Offer-链表中倒数第k个节点​

​429,剑指 Offer-删除链表的节点​

​410,剑指 Offer-从尾到头打印链表​

​386,链表中的下一个更大节点​

​381,合并两个有序链表(易)​



栈相关算法

​528,使用栈解基本计算器 II​

​526,删除字符串中的所有相邻重复项​

​523,单调栈解下一个更大元素 II​

​519,单调栈解下一个更大元素 I​

​508,使用栈来判断有效的括号​

​500,验证栈序列​

​438,剑指 Offer-栈的压入、弹出序列​

​437,剑指 Offer-包含min函数的栈​

​416,剑指 Offer-用两个栈实现队列​



其他经典算法

​Manacher(马拉车)算法​

​426,什么是递归,通过这篇文章,让你彻底搞懂递归​

​394,经典的八皇后问题和N皇后问题​

​371,背包问题系列之-基础背包问题​

​366,约瑟夫环​

​362,汉诺塔​

​356,青蛙跳台阶相关问题​

​389,两个超级大数相加​



位运算相关算法

​592,位运算解颠倒二进制位​

​565,多种方式解2的幂​

​560,位运算解只出现一次的数字 II​

​556,位运算解形成两个异或相等数组的三元组数目​

​534,剑指 Offer-0~n-1中缺失的数字​

​513,汉明距离​

​512,反转二进制位​

​499,位运算解只出现一次的数字 III​

​495,位运算等多种方式解找不同​

​494,位运算解只出现一次的数字​

​476,根据数字二进制下1的数目排序​

​469,位运算求最小的2的n次方​

​357,交换两个数字的值​

​361,交替位二进制数​

​383,不使用“+”,“-”,“×”,“÷”实现四则运算​

​364,位1的个数系列(一)​

​385,位1的个数系列(二)​

​402,位1的个数系列(三)​

​425,剑指 Offer-二进制中1的个数​



数据结构

​348,数据结构-1,数组​

​352,数据结构-2,链表​

​359,数据结构-3,队列​

​363,数据结构-4,栈​

​368,数据结构-5,散列表​

​373,数据结构-6,树​

​378,数据结构-7,堆​



排序

​101,排序-冒泡排序​

​102,排序-选择排序​

​103,排序-插入排序​

​104,排序-快速排序​

​105,排序-归并排序​

​106,排序-堆排序​

​107,排序-桶排序​

​108,排序-基数排序​

​109,排序-希尔排序​

​110,排序-计数排序​

​111,排序-位图排序​

​112,排序-其他排序​



查找

​201,查找-顺序查找​

​202,查找-二分法查找​

​203,查找-插值查找​

​204,查找-斐波那契查找​

​205,查找-分块查找​

​206,查找-哈希查找​

​207,查找-其他查找​



其他算找

​602,比较版本号​

​601,下一个排列​

​599,统计全 1 子矩形​

​585,最大升序子数组和​

​584,前缀和解和为K的子数组​

​583,字符串中的最大奇数​

​581,所有蚂蚁掉下来前的最后一刻​

​579,摩尔投票算法解主要元素​

​578,计数质数​

​577,数组中的最长连续子序列​

​571,山脉数组的峰顶索引​

​569,多种方式解4的幂​

​567,最后一块石头的重量​

​562,数组中的最长山脉​

​558,最长回文串​

​550,旋转图像​

​546,砖墙,哈希表解决​

​541,字符串压缩,视频演示​

​536,剑指 Offer-构建乘积数组​

​535,剑指 Offer-扑克牌中的顺子​

​533,剑指 Offer-最小的k个数​

​525,最富有客户的资产总量​

​524,爱生气的书店老板​

​521,滑动窗口解最大连续1的个数 III​

​518,托普利茨矩阵​

​511,独一无二的出现次数​

​509,数组中的第K个最大元素​

​506,无重叠区间​

​504,旋转数组的3种解决方式​

​496,字符串中的第一个唯一字符​

​487,重构字符串​

​484,打家劫舍 II​

​482,上升下降字符串​

​481,用最少数量的箭引爆气球​

​480,移动零,通过一个精彩的故事告诉你怎么解​

​479,递归方式解打家劫舍​

​475,有效的山脉数组​

​472,插入区间​

​468,提莫攻击的两种解决方式​

​467. 递归和非递归解路径总和问题​

​454,字母异位词分组​

​452,跳跃游戏​

​443,滑动窗口最大值​

​436,剑指 Offer-顺时针打印矩阵​

​427,剑指 Offer-数值的整数次方​

​424,剑指 Offer-剪绳子​

​419,剑指 Offer-旋转数组的最小数字​

​418,剑指 Offer-斐波那契数列​

​415,最佳观光组合​

​412,判断子序列​

​408,剑指 Offer-替换空格​

​405,换酒问题​

​406,剑指 Offer-二维数组中的查找​

​404,剑指 Offer-数组中重复的数字​

​393,括号生成​

​392,检查数组对是否可以被 k 整除​

​390,长度最小的子数组​

​384,整数反转​

​382,每日温度的5种解题思路​

​379,柱状图中最大的矩形(难)​

​380,缺失的第一个正数(中)​

​377,调整数组顺序使奇数位于偶数前面​

​369,整数替换​

​365,消除游戏​

​358,移掉K位数字​

​355,两数相加 II​

​354,字典序排数​

​351,最少移动次数使数组元素相等 II​

​350,有序矩阵中第K小的元素​

​349,组合总和 Ⅳ​

​347,猜数字大小 II​

​346,查找和最小的K对数字​

​345,超级次方​

​344,最大整除子集​

​343,水壶问题​

​342,计算各个位数不同的数字个数​

太多了,就不在一一列举了,具体可以到微信公众号(数据结构和算法)中查看