ohmyblog

#算法

经典题解析:25 匹马 5 条赛道,没有计时器怎么找出前三

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。题面很短:25 匹马、5 条赛道,每场比赛只能知道同场五匹马的相对名次,没有计时器,问找出全场最快的前三名,最少要比几场?

历史题目复盘:给一堆单词,能不能拼出目标串

先说明属性:这是一篇历史题目复盘,题目出自本地历史面试资料,与任何公司的当前招聘无关。题面很短:给定 hell、well、hello、world 这样一组单词,问能否拼出 helloworld,要求代码实现。默认规则沿用经典版本:词典里的单词可以重复使用。

经典题解析:判断两棵二叉树是否相等,递归与迭代两种写法

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「判断两棵二叉树是否相等」是树题里的入门高频款,题面一句话——相等返回真,否则返回假,并说明算法复杂度。它考的不是思路多巧,而是你能不能把「相等」两个字拆成可执行的判定规则。

经典题解析:删除链表倒数第 N 个节点,一趟遍历怎么做到

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「删除链表倒数第 N 个节点」是链表题里的高频款,题面一句话,考点却藏在边界里——很多人能写出答案,但删头节点就翻车。

经典题解析:围成一圈报数出局,最后留下的是谁

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(原题要求输入 M、N,从 1 至 N 循环报数、逢 M 出局并依次输出,写 C 程序),与任何公司的当前招聘无关。它就是著名的约瑟夫环问题,入门但不好糊弄——会背公式的人不少,被追问「为什么加 k」时能讲清楚的不多。

经典题解析:1、2、5 凑 100,一共有多少种凑法

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。它是动态规划的入门形态,但淘汰率不低——因为一半人会把「组合」写成「排列」,答案虚高几个数量级还不自知。

经典题解析:有序数组平方后,有多少种不同取值

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。它看起来是道去重统计题,实际考察的是你能不能发现「输入有序」这份免费信息。

经典题解析:两条链表相交,第一个公共节点怎么找

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。链表找交点是双指针题里的经典款,面试官真正考察的不是背答案,而是你能否把「对齐剩余路程」这个洞察自己推出来。

经典题解析:快速排序为什么快,最坏情况怎么救

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。快速排序是排序题里的常青树——人人会背 O(n log n),但面试官真正想听的是:它为什么快、什么时候不快、不快了怎么救。

经典题解析:数组里缺了两个数,O(n) 时间 O(1) 空间找出来

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。题面:1 到 n+2 这些整数本该全在一个数组里,现在缺了两个,数组乱序。要求 O(n) 时间、O(1) 额外空间,把缺的两个数找出来。