作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。 关于语言的选择: 关于文章类型的选择: 关于题目的来源: 关于题解的说明: 关于算法能力提升的一些意见: 关于分类: 没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。 搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。 别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。 容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。 数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。 链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。 树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。 数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。 最后两个,凑个整,刚好100,是一些比较经典的算法列举。 希望这100个算法题能对正在看的你有所帮助!
0x01.概述
0x02.说明
0x03.正文–精选算法100题(附个人题解)
分类一:动态规划(dp)
题目名称
来源
个人题解
备注
01.打家劫舍
Leetcode题198:戳我前往
戳我前往
估计是最好的dp入门题型了
02.斐波拉契数列
经典问题
戳我前往
确实比较经典哦~
03.零钱兑换问题
Leetcode题322:戳我前往
戳我前往
也是一个比较经典的问题了
04.零钱兑换II
Leetcode题518:戳我前往
戳我前往
零钱问题通用解法
05.最长上升子序列
Leetcode题300:戳我前往
戳我前往
堪称数组dp中的典范
06.牌型种数
蓝桥杯:链接暂无
戳我前往
二维动态规划,要仔细想想
07.最低票价
Leetcode题983:戳我前往
戳我前往
如何状态转移?
08.不同的二叉搜索树
Leetcode题152:戳我前往
戳我前往
你会发现dp的神奇之处
09.礼物的最大价值
《剑指offer》题47
戳我前往
优化dp的思路
10.接雨水
Leetcode题42:戳我前往
戳我前往
需要仔细思考以发现dp
11.编辑距离
Leetcode题72:戳我前往
戳我前往
最为经典的二维dp题型
12.买卖股票的最佳时机(6题)
Leetcode6题:戳我前往
戳我前往
统一化的dp思维,棒
13.鸡蛋掉落
Leetcode题887:戳我前往
戳我前往
有些难度哦~
14.最大正方形
Leetcode题221:戳我前往
戳我前往
矩阵中的dp思路
15.和为K的子数组
Leetcode题560:戳我前往
戳我前往
前缀和也是dp的思路
分类二:搜索类(DFS,BFS,回溯,暴力搜索)
题目名称
来源
个人题解
备注
16.图的深搜和广搜
经典问题
戳我前往
搜索中的经典问题
17.方格填数
蓝桥杯:链接暂无
戳我前往
揣摩一下DFS的思路
18.路径之谜
蓝桥杯:链接暂无
戳我前往
经典改编迷宫问题
19.岛屿的最大面积
Leetcode题695:戳我前往
戳我前往
最常见的矩阵中的DFS
20.逃离大迷宫
Leetcode题1036:戳我前往
戳我前往
各种搜索思想都可以应用
21.单词搜索
Leetcode题79:戳我前往
戳我前往
字符串中的搜索
22.检查网格中是否存在有效路径
Leetcode题1391:戳我前往
戳我前往
思考另类的搜索
23.地图分析
Leetcode题1162:戳我前往
戳我前往
多源BFS
24.机器人的运动范围
《剑指offer》13题
戳我前往
DFS进行计数的基本思路
25.括号生成
Leetcode题22:戳我前往
戳我前往
用DFS生产括号
26.01 矩阵
Leetcode题542:戳我前往
戳我前往
矩阵中的搜索
27.岛屿数量
Leetcode题200:戳我前往
戳我前往
根据需求使用DFS
28.全排列问题
Leetcode题46:戳我前往
戳我前往
最经典的回溯算法
分类三:字符串
题目名称
来源
个人题解
备注
29.KMP算法
经典算法
戳我前往
经典字符串匹配算法
30.拼写单词
Leetcode题1160:戳我前往
戳我前往
很简单的字符串问题
31.竖直打印单词
Leetcode题1324:戳我前往
戳我前往
简单但值得思考
32.不含 AAA 或 BBB 的字符串
Leetcode题984:戳我前往
戳我前往
巧妙构造出字符串
33.实现Trie(前缀树)
Leetcode题208:戳我前往
戳我前往
字符串中经典的算法
34.最长快乐前缀
Leetcode题1392:戳我前往
戳我前往
如何处理字符串的前后缀
35.单词搜索II
Leetcode题212:戳我前往
戳我前往
前缀树的应用
36.单词的压缩编码
Leetcode题820:戳我前往
戳我前往
前缀树灵活运用
37.判定字符是否唯一
《程序员面试金典》01.02
戳我前往
简单但值得思考
38.判定是否互为字符重排
《程序员面试金典》 01.02
戳我前往
简单的面试题
39.无重复字符的最长子串
Leetcode题3:戳我前往
戳我前往
字符串中的滑动窗口
40.字符串转换整数
Leetcode题8:戳我前往
戳我前往
需要考虑的细节很多
41.翻转字符串里的单词
Leetcode题151:戳我前往
戳我前往
正则匹配
42.整数转换英文表示
Leetcode题273:戳我前往
戳我前往
非常实用的算法题
43.统计重复个数
Leetcode题466:戳我前往
戳我前往
循环结剪枝
44.超级回文数
Leetcode题906:戳我前往
戳我前往
字符串与大数的处理思路
45.单词子集
Leetcode题96:戳我前往
戳我前往
特征思想的应用
分类四:容器类(哈希表,栈,队列,Map,Set)
题目名称
来源
个人题解
备注
46.按位与为零的三元组
Leetcode题82:戳我前往
戳我前往
哈希表优化
47.设计地铁系统
Leetcode题1396:戳我前往
戳我前往
合理选择容器
48.LFU缓存
《程序员面试金典》
戳我前往
选择容器来设计
49.设计推特
Leetcode题355:戳我前往
戳我前往
很实用的算法
50.最小栈
Leetcode题155:戳我前往
戳我前往
两栈设计最小栈
51.子数组的最小值之和
Leetcode题907:戳我前往
戳我前往
单调栈的应用
52.栈的压入、弹出序列
《剑指offer》
戳我前往
栈的合法序列
53.有效括号的嵌套深度
Leetcode题1111:戳我前往
戳我前往
模仿栈
54.逆波兰算法
经典算法
戳我前往
后缀表达式关键算法
分类五:数学思维类(含位运算思想)
题目名称
来源
个人题解
备注
55.水壶问题
Leetcode题365:戳我前往
戳我前往
经典数学问题
56.三维形体的表面积
Leetcode题892:戳我前往
戳我前往
空间思想解决算法问题
57.生命游戏
Leetcode题289:戳我前往
戳我前往
数学思维的运用
58.交点
《程序员面试金典》16.03
戳我前往
二维平面的交点问题
59.使数组唯一的最小增量
Leetcode题945:戳我前往
戳我前往
数学思维的运用
60.数值的整数次方
《剑指offer》题16
戳我前往
非常容易出错的面试题
61.求 1+2+…+n
《剑指offer》
戳我前往
短路原则
62.1~n整数中1出现的次数
《剑指offer》
戳我前往
数学思维找规律
63.数组中数字出现的次数
《剑指offer》
戳我前往
分组异或
分类六:链表
题目名称
来源
个人题解
备注
64.两数相加
Leetcode题2:戳我前往
戳我前往
链表的加法问题
65.链表的中间结点
Leetcode题876:戳我前往
戳我前往
快慢指针思想
66.删除链表的倒数第N个节点
Leetcode题19:戳我前往
戳我前往
哑节点和双指针
67.合并两个有序链表
Leetcode题21:戳我前往
戳我前往
链表的递归处理
68.合并K个排序链表
Leetcode题23:戳我前往
戳我前往
优先队列的使用
69.删除排序链表中的重复元素 II
Leetcode题82:戳我前往
戳我前往
链表基础指针操作
70.分隔链表
Leetcode题86:戳我前往
戳我前往
双指针操作
71.旋转链表
Leetcode题61:戳我前往
戳我前往
巧转循环链表
72.两两交换链表中的节点
Leetcode题24:戳我前往
戳我前往
递归解决
73.反转链表
Leetcode题206:戳我前往
戳我前往
多种思路反转链表
74.K 个一组翻转链表
Leetcode题25:戳我前往
戳我前往
分组逆转
75.判断链表是否有环
《剑指offer》
戳我前往
多种思路判断链表是否有环
76.单链表的插入排序
Leetcode题147:戳我前往
戳我前往
链表的插入排序
77.两数相加 II
Leetcode题445:戳我前往
戳我前往
用栈翻转链表元素
分类七:树
题目名称
来源
个人题解
备注
78.删除给定值的叶子结点
Leetcode题1325:戳我前往
戳我前往
树的简单删除问题
79.二叉树的最大最小深度
Leetcode题104:戳我前往
戳我前往
二叉树的深度问题
80.将有序数组转换为二叉搜索树
Leetcode题108:戳我前往
戳我前往
数组和二叉树的转换
81.二叉树的右视图
Leetcode题199:戳我前往
戳我前往
二叉树的视图转换
82.另一个树的子树
Leetcode题572:戳我前往
戳我前往
两树关系的判断
83.二叉树的最近公共祖先
《剑指offer》
戳我前往
公共祖先问题
84.二叉树的层序遍历序列存储
Leetcode题102:戳我前往
戳我前往
二叉树遍历序列的存储
85.验证二叉搜索树
Leetcode题98:戳我前往
戳我前往
二叉搜索树的验证
分类八:数组(贪心,二分)
题目名称
来源
个人题解
备注
86.两个数组间的距离值
Leetcode题1385:戳我前往
戳我前往
二分法应用
87.旋转矩阵
《程序员面试金典》
戳我前往
原地修改
88.合并区间
Leetcode题56:戳我前往
戳我前往
排序处理数组问题
89.跳跃游戏
Leetcode题55:戳我前往
戳我前往
贪心思想运用
90.盛最多水的容器
Leetcode题11:戳我前往
戳我前往
双指针
91.统计「优美子数组」
Leetcode题1248:戳我前往
戳我前往
滑动窗口
92.搜索旋转排序数组
Leetcode题33:戳我前往
戳我前往
二分搜索
93.山脉数组中查找目标值
Leetcode题1095:戳我前往
戳我前往
二分搜索
94.快乐数
Leetcode题202:戳我前往
戳我前往
快慢指针判断成环思路
95.跳跃游戏 II
Leetcode题45:戳我前往
戳我前往
贪心思想
96.x 的平方根
Leetcode题69:戳我前往
戳我前往
二分法取平方根
97.数组中的逆序对
《剑指offer》题51
戳我前往
归并中的计数(分治)
98.课程表 II
Leetcode题210:戳我前往
戳我前往
数组中的拓扑排序
分类九:经典算法列举
题目名称
来源
个人题解
备注
99.普利姆算法
经典算法
戳我前往
最小生成树经典算法
100.约瑟夫环
经典算法
戳我前往
很经典的动态问题
0x04.End
后续还会继续更新更多的内容。
您的支持,是我的不竭动力!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算