原文:https://www.zhihu.com/question/24964987








从程序员面试角度来说,经典的问题包括以下内容:

算法部分
二分搜索 Binary Search 分治 Divide Conquer 宽度优先搜索 Breadth First Search 深度优先搜索 Depth
First Search 回溯法 Backtracking 双指针 Two Pointers 动态规划 Dynamic Programming 扫描线
Scan-line algorithm 快排 Quick Sort
数据结构部分
栈 Stack 队列 Queue 链表 Linked List 数组 Array 哈希表 Hash Table 二叉树 Binary Tree 堆 Heap
并查集 Union Find 字典树 Trie

根据2017年校招的情况,我整理了2017校招的常考算法类型,以及对应的典型题目。

另附参考答案地址:LINTCODE / LEETCODE 参考答案查询
<https://link.zhihu.com/?target=http%3A//www.jiuzhang.com/solution/>

数学
尾部的零
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-pairs/>
斐波纳契数列
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/fibonacci/>
x的平方根
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/sqrtx/>
x的平方根 2
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/sqrtx-ii/>
大整数乘法
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/big-integer-multiplication/>
骰子求和
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/dices-sum/>
最多有多少个点在一条直线上
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/max-points-on-a-line/>
超级丑数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/super-ugly-number/>

比特位操作
将整数A转换为B
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/flip-bits/>
更新二进制位
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/update-bits/>
二进制表示
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/binary-representation/>
O(1)时间检测2的幂次
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/o1-check-power-of-2/>
二进制中有多少个1
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/count-1-in-binary/>

动态规划
编辑距离
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/edit-distance/>
正则表达式匹配
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/regular-expression-matching/>
交叉字符串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/interleaving-string/>
乘积最大子序列
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/maximum-product-subarray/>
二叉树中的最大路径和
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/binary-tree-maximum-path-sum/>
不同的路径
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/unique-paths/>
通配符匹配
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/wildcard-matching/>


滑动窗口的中位数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/sliding-window-median/>
数据流中位数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/data-stream-median/>
最高频的K个单词
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/top-k-frequent-words/>
接雨水
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/trapping-rain-water-ii/>
堆化
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/heapify/>
排序矩阵中的从小到大第k个数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/kth-smallest-number-in-sorted-matrix/>

二叉树
二叉树中序遍历
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/binary-tree-inorder-traversal/>
二叉树的序列化和反序列化
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/binary-tree-serialization/>
子树
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/subtree/>
最近公共祖先
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/lowest-common-ancestor/>
二叉树的层次遍历
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/binary-tree-level-order-traversal/>
将二叉树拆成链表
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/flatten-binary-tree-to-linked-list/>
在二叉查找树中插入节点
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/insert-node-in-a-binary-search-tree/>

二分法
经典二分查找问题
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/classical-binary-search/>
二分查找
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/first-position-of-target/>
两数组的交
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/intersection-of-two-arrays/>
区间最小数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/interval-minimum-number/>
寻找旋转排序数组中的最小值
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/find-minimum-in-rotated-sorted-array/>
搜索排序区间
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/search-for-a-range/>
寻找峰值
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/find-peak-element/>

分治法
快速幂
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/fast-power/>
两个排序数组的中位数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/median-of-two-sorted-arrays/>
合并K个排序链表
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/merge-k-sorted-lists/>

哈希表
变形词子串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/substring-anagrams/>
哈希函数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/hash-function/>
短网址
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/tiny-url/>
复制带随机指针的链表
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/copy-list-with-random-pointer/>
最小子串覆盖
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/minimum-window-substring/>

矩阵
搜索二维矩阵
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/search-a-2d-matrix/>
旋转图像
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/rotate-image/>
岛屿的个数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/number-of-islands/>
螺旋矩阵
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/spiral-matrix/>

宽度优先搜索
克隆图
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/clone-graph/>
被围绕的区域
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/surrounded-regions/>
拓扑排序
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/topological-sorting/>
单词接龙
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/word-ladder/>

链表
实现一个链表的反转
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-linked-list/>
链表求和 II
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/add-two-numbers-ii/>
删除链表中的元素
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/remove-linked-list-elements/>
LRU缓存策略
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/lru-cache/>
合并两个排序链表
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/merge-two-sorted-lists/>
两个链表的交叉
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/intersection-of-two-linked-lists/>
翻转链表 II
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-linked-list-ii/>
复制带随机指针的链表
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/copy-list-with-random-pointer/>
带环链表
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/linked-list-cycle/>

枚举法
统计数字
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/digit-counts/>
名人确认
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/identify-celebrity/>
最长连续上升子序列
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/count-of-smaller-number/>
最大子数组差
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/maximum-subarray-difference/>
最长公共前缀
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/longest-common-prefix/>

排序
快排
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/sort-integers-ii>
摆动排序
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/wiggle-sort/>
最大间距
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/maximum-gap/>
最接近零的子数组和
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/subarray-sum-closest/>
最大数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/largest-number/>
四数之和
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/4sum/>
数组划分
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/partition-array/>
第K大元素
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/kth-largest-element/>
排颜色
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/sort-colors-ii/>

深度优先搜索
N皇后问题
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/n-queens/>
图是否是树
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/graph-valid-tree/>
带重复元素的排列
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/permutations-ii/>
分割回文串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/palindrome-partitioning/>

数组
数组划分
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/partition-array/>
逆序对
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-pairs/>
合并区间
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/merge-intervals/>
搜索旋转排序数组
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/search-in-rotated-sorted-array/>
最大子数组
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/maximum-subarray/>
删除排序数组中的重复数字
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/remove-duplicates-from-sorted-array/>
第二大的数组
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/second-max-of-array/>
先递增后递减数组中的最大值
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/maximum-number-in-mountain-sequence/>
两数和 - 输入的数据是有序的
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/two-sum-input-array-is-sorted/>
两个排序数组的中位数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/median-of-two-sorted-arrays/>
在大数组中查找
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/search-in-a-big-sorted-array/>
颜色分类
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/sort-colors/>
合并排序数组
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/merge-two-sorted-arrays/>
无序数组K小元素
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/kth-smallest-numbers-in-unsorted-array/>
中位数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/median/>
奇偶分割数组
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/partition-array-by-odd-and-even/>

贪心
主元素
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/majority-number/>
寻找缺失的数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/find-the-missing-number/>
买卖股票最佳时机
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/best-time-to-buy-and-sell-stock/>
加油站
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/gas-station/>
删除数字
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/delete-digits/>
落单的数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/single-number-ii/>
最大子数组差
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/maximum-subarray-difference/>

线段树
线段树查询
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/segment-tree-query/>
线段树的构造
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/segment-tree-build-ii/>
线段树的修改
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/segment-tree-modify/>
区间求和
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/interval-sum/>
统计比给定整数小的数的个数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/count-of-smaller-number/>


带最小值操作的栈
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/min-stack/>
用栈实现队列
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/implement-queue-by-two-stacks/>
有效的括号序列
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/valid-parentheses/>
简化路径
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/simplify-path/>

整数
反转整数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-integer/>
将整数A转换为B
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/flip-bits/>
整数排序
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/zh-cn/problem/sort-integers/>

字符串处理
罗马数字转整数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/roman-to-integer/>
回文数
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/palindrome-number/>
乱序字符串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/anagrams/>
有效回文串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/valid-palindrome/>
翻转字符串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/reverse-words-in-a-string/>
最长无重复字符的子串
<https://link.zhihu.com/?target=https%3A//www.lintcode.com/en/problem/longest-substring-without-repeating-characters/>
字符串压缩
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/string-compression/>
比较字符串
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/compare-strings/>
编辑距离II
<https://link.zhihu.com/?target=http%3A//www.lintcode.com/en/problem/edit-distance-ii/>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信