截止到目前我已经写了 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,计算各个位数不同的数字个数
太多了,就不在一一列举了,具体可以到微信公众号(数据结构和算法)中查看