第三道:用递归实现斐波那契数列的第N项,并说明递归方案的缺陷及优化方向。
顾屿差点没绷住。
冒泡排序。回文判断。斐波那契递归。
这三道题,对顾屿来说实在太小儿科了。
前世他创业没钱雇人,产品、开发、测试全是他一个人硬扛,硬生生被逼成了个全栈野路子。
这种感觉怎么形容呢。
大概就是让一个开了十五年卡车的老司机,去考科目一的口头题:“红灯亮了应该怎么办?”
顾屿拿起旁边的圆珠笔。
第一道题。
他没用标准教科书的写法。
手起笔落,直接写了一版双向冒泡排序的优化变体,减少了接近一半的无效遍历。
时间复杂度分析写了三行,从最优O(n)到最差O(n),顺带提了一句在近乎有序的数据集上,插入排序的常数项优势更大。
第二道题。
回文判断。
他用双指针法写完,又在旁边补了一行注释:若输入是Unicode字符串,需额外处理代理对的边界情况。
第三道题。
斐波那契递归。
顾屿写完朴素递归版本后,在下面画了一棵递归树,标注了大量重复子问题。
然后给出了两种优化方案:备忘录法和自底向上的动态规划。
最后,他在纸张空白处加了一行小字:“如果N极大且只需精确值,建议用矩阵快速幂,时间复杂度可压到O(logN)。”
全程不到四分钟。
顾屿把笔放下,把那张A4纸推回去。
瘦高个接过来,低头扫了一眼。
他的表情变化很有层次。
先是例行公事的随意一瞥。
然后眉头拧了一下。
然后眼球开始快速左右移动,像是在逐行校验代码逻辑。