重点掌握字符串/数组处理、动态规划、二叉树、深度/广度优先搜索(DFS/BFS)、回溯算法
机考介绍
- 机考为三道算法题目,难度为 2 道简单,1 道中等,分值为 100 分、100 分、200 分。总分 400 分,平台在牛
客。 - 摄像头一定要开,避免离开座位,左右晃头,以免系统误判作弊。
- 考试过程须控制好做题节奏,切记不要在一道题目上花费过多的时间,合理分配时间。
刷题建议 - 遇到不会的题怎么办?
万事开头难,好在算法的比我们之前做的数学题死板多了。一开始遇到题目不会是非常非常常见 的,我
建议遇到不会的题目或者自己想了半天还没有思路的题目,这么做: - 直接看评论区答案(牛客按照热度降序,LeetCode 按照点赞数降序,注意 LeetCode 有时候官 方题
解非常绕,可以优先看非官方的)。争取记住看答案后就明白这么做的原因然后背住大 概的思路。 - 第二天按照自己的记忆和理解再刷一遍这个题。
- 第五天再刷一次。
就是说按照遗忘曲线的规律来刷题,并且整理套路(套路可以看评论区的高票答案)。我觉得刷 题不仅在
多,而且还要让我们刷的每一个题目有价值。其实刷题多了就会发现大多数题目套路都 是一致的。 - 题目都有好多解法,怎么办?
对于让人眼前一亮,属于奇技淫巧,我强烈建议记下来学习一波。大多数情况下可以参考下面题 型汇总,
对于题型汇总中的高权重题型,建议掌握下这个方法,非高频的以后再说。 - 要不要写输入输出?
答案是不需要。现在是核心代码模式。 - 怎么鉴定我刷题成果?
请参考下文的必会题目,如果对于这些题目都有思路并且能解答,那么恭喜你,可以准备考试 了! - 实际、独立、按时练习
实际:不要只看解法,要实际去练,脑和手并不一致。独立:独立完成,事后再看解析,做题过程不要看答案。按
时:全心投入,100 分题要在 40 分钟内完成答题,200 分题要在 70 分钟内完成
题型汇总
按照算法的难度和频率大致可以分为必会和进阶两种类型,每个子项排序表示考察的频率,序号越低, 考察频率
越高,比如数组是考察频率最高的。大家实际刷题中可以根据题库提供的功能筛选,按照热 度、题解数等进行
筛选。
必会
- 数组
- 字符串
- 排序
- 贪心
- 递归
- 循环
- 滑窗
- 栈
- 进制转换
- 位运算
- 队列
- 哈希表
- 链表
- 线性表
- 二分查找
进阶
- 图
- 树
- DFS 搜索
- BFS 搜索
- 动态规划
- 前缀和
- 排列组合
- 矩阵
- 双指针
- 回溯
- 状态机
- 并查集
- 正则表达式
- 分治
- 枚举
- 统计
建议
- 必会部分知识点倾向于出现在 100 分题中,进阶知识点倾向于出现在 200 分题中。建议必会部分优先 掌
握 1-10 知识点,进阶部分优先掌握 1-4 知识点,这部分出现频次高,短时间内刷题性价比高。 - 对于进阶部分,图往往伴随着深度优先和广度优先出现,我建议优先广度优先深度优先、二叉树 的遍历
(能应付二叉树路径统计等题型)。其余有精力再准备。对于链表、广度优先和深度优 先,LeetCode 和牛
客上有很多现成的答题模板,大家可以当做公式一样进行参考。
参考套路
- 史上最全遍历二叉树详解
https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/leetcodesuan-fa-xiu-li
an-dong-hua-yan-shi-xbian-2/ - BFS 算法框架详解
https://leetcode-cn.com/problems/open-the-lock/solution/wo-xie-liao-yi-tao-bfs-suan-fa-kuang-jia
-jian-dao-/ - 图文详解 BFS, DFS
https://leetcode-cn.com/circle/article/YLb5l4/ - labuladong 的算法小抄
https://github.com/labuladong/fucking-algorithm
比较全,但是建议只看题型汇总中的高频题型
必会题目
题目的答案语言可能比较单一,大家可以根据题目内容进行关键字搜索,找到自己语言的答案,答案为别人 写
的,不是官方参考答案,大家可以当做有思路的参考。这部分题目一定要知道具体的做法。
搜索题目的时候发现了 **https://blog.nowcoder.net/zhuanlan/v0Eoqj**这篇专栏,不建议大家购买,但是里 面的
题目描述的确比较详细,大家可以参考,然后根据描述去搜索答案。
这部分的题目尽量都要掌握。
- 字符串分割
https://leetcode-cn.com/circle/discuss/niKSMZ/ - 组成最大数
https://python.iitter.com/首页/248622.html - 统计射击比赛成绩
http://www.amoscloud.com/?p=3561 - 字符串序列判定
https://www.nowcoder.com/questionTerminal/5382ff24fbf34a858b15f93e2bd85307 - 数据分类
http://www.amoscloud.com/?p=2414 - 5 键键盘的输出
https://blog.nowcoder.net/n/c7bb482cddb647b5965c2f55ef13f7da - 检查是否存在满足条件的数字组合
http://www.amoscloud.com/?p=2825 - 数组拼接
https://cxybb.com/article/weixin_41398052/106045155 - 数列描述
https://blog.nowcoder.net/n/fc9be58c1a994072af9a77cd25cd3411 - 考勤信息
http://www.amoscloud.com/?p=3038 - 按单词下标区间翻转文章内容https://blog.nowcoder.net/n/c157854438cc46629f0e5e33a94a4988
- 最大括号深度
https://blog.nowcoder.net/n/316f6f2d6b494e28a1e4ca81b0a76988 - 字符串加密
https://www.codeleading.com/article/89584473419/ - 整数对最小和
http://www.4k8k.xyz/article/u013598405/114239804#第二题%C
2%A0%20%E6%95%B4%E6%95%B0%E5%AF%B9%E6%9C%80%E5%B0%8F%E5%92%8C - 求字符串中所有整数的最小和
https://ask.csdn.net/questions/7423645 - 乱序整数序列两数之和绝对值最小
http://www.amoscloud.com/?p=3257 - 非严格递增连续数字序列
http://www.amoscloud.com/?p=2964 - 分积木
https://blog.nowcoder.net/n/36e682ed2a0a455cbbfa4dc4dd24e280 - 连续字母长度
http://www.amoscloud.com/?p=3034 - 滑动窗口最大和
https://leetcode-cn.com/problems/sliding-window-maximum/ - 素数之积
https://icode.best/i/62685042254334 - 仿 LISP 运算
https://www.codetd.com/article/6784237 - 贪吃蛇
https://blog.nowcoder.net/n/42420d1a2d324c32838f7f23e4da45f3 - 解密犯罪时间
https://www.its203.com/article/weixin_44224529/117932485?2022-03-31 - 求满足条件的最长子串的长度
https://www.jianshu.com/p/edc1efd18a67 - 机器人走迷宫
https://blog.nowcoder.net/n/0bcd2d2047f4464bae29dedd5104c308?from=nowcoder_improve - 高效的任务规划
https://leetcode-cn.com/circle/discuss/EC2mv8/view/zT3KcL/ - 二叉树遍历
https://www.codeleading.com/article/43985735740/ - 书籍叠放
https://www.codeleading.com/article/11185696007/ - 区间交集https://blog.nowcoder.net/n/fd28c4bd1367426eb973a3e62e79a24e
- 分月饼
https://javamana.com/2021/12/20211206054724872r.html - 找最小数
https://blog.nowcoder.net/n/60b56945100944cc987cefdd02db1b08 - 简易内存池
https://blog.51cto.com/u_15127575/3271270 - 服务失效判断
https://blog.nowcoder.net/n/82d7ba4e145e48e2b203b1ee63d9b153 - 图像物体的边界
https://leetcode-cn.com/circle/discuss/Bu1fD6/view/oIQ50T/ - 跳格子游戏
https://blog.nowcoder.net/n/8971e4919a324ada973297044015397e - 数组二叉树
https://www.idchg.com/info/86685/
题目可以参考这个博客,不 建议购买 https://blog.nowcoder.net/n/b3f4a031eea2422c9c42e0f71d
c6e161 - 考古学家
https://blog.nowcoder.net/n/9876a8a7bf104ec7ab88c350f268b8de - 解压报文
https://www.codeleading.com/article/50015743571/ - 最长的指定瑕疵度的元音子串
https://www.icode9.com/content-1-1259108.html - 目录删除
https://www.cnblogs.com/skyshi/p/15969831.html - 火锅
https://cdmana.com/2022/03/202203260546548598.html - 服务器广播
https://www.codeleading.com/article/14505696344/ - 二叉树的广度优先遍历
https://www.cnblogs.com/gcter/p/15469584.html - 找单词
https://blog.nowcoder.net/n/581f8f196a8a4f98a0a05334daa4b6b1?from=nowcoder_improve - 招聘
http://www.noobyard.com/article/p-vvnvrixx-px.html
某公司组织一场公开招聘活动... - 斗地主之顺子
https://blog.nowcoder.net/n/d2039c7bb5d74c7da969f731f036d700
参考题目
牛客 https://www.nowcoder.com/ta/huawei
简单题
- HJ12 字符串反转
- HJ11 数字颠倒
- HJ54 表达式求积
- HJ106 字符逆序
- HJ76 尼科彻斯定力
- HJ75 公共子串计算
- HJ86 求最大连续 bit 数
- HJ85 最长回文子串
- HJ100 等差数列
- HJ87 密码强度等级
中等题 - HJ10 字符个数统计
- HJ46 截取字符串
- HJ60 查找组成一个偶数最接近的两个素数
- HJ40 统计字符
- HJ14 字符串排序
- HJ5 进制转换
- HJ59 找出字符串中第一个只出现一次的字符
- HJ58 输入 n 个整数,输出其中最小的 K 个
- HJ81 字符串字符匹配
LeetCode https://leetcode-cn.com - 剑指 offer 62 题: 圆圈中最后剩下的数字
- 3:无重复字符的最长子串
采用滑窗法 - 14:最长公共前缀
- 151:翻转字符串里的词
- 2047:字符串中的单词数