"[图片] 一、选择题(共计 50 分) 1、在下列四种排序算法,只有( B)是一种不稳定排序 A、冒泡排序 B、选择排序 C、插入排序 D、归并排序 2、一个数组,含有大量重复元素,使用(B )进行排序是一种合理的抉择 A、快速排序 B、双路快速排序 C、三路快速排序 D、希尔排序 3、杨辉三角,是二项式系数在三角形中 .."

毕业十年后,我忍不住出了一份程序员的高考试卷

一、选择题(共计 50 分)

1、在下列四种排序算法,只有( B)是一种不稳定排序

A、冒泡排序

B、选择排序

C、插入排序

D、归并排序

2、一个数组,含有大量重复元素,使用(B )进行排序是一种合理的抉择

A、快速排序

B、双路快速排序

C、三路快速排序

D、希尔排序

3、杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉 1261 年所著的(B )一书中出现,LeetCode 上第 ( B)和( B)就是与杨辉三角有关的题目。

A、《详解八章算法》、118 、119

B、《详解九章算法》、118 、119

C、《详解八章算法》、139 、140

D、《详解九章算法》、139 、140

4、小吴想执行某项破坏性的操作,比如快速删除系统元素,使用(C )方式可以帮助我更好的完成这个任务

A、二叉树的前序遍历

B、二叉树的中序遍历

C、二叉树的后序遍历

D、二叉树的层序遍历

5、在《算法导论》第二版第 7 章(快速排序)的思考题(第 95 页)中提及到一种低效的递归排序算法, Howard、Fine 等教授将这个算法称为 (B )

A、垃圾排序

B、完美排序

C、变种快速排序

D、HF 排序

6、(多选)如果程序员小吴将下面这张图里面的文章写完,将会 (ABC)

A、收到律师函

B、学会打篮球

C、学会 RAP

D、文章阅读十万加

7、下列哪个短语缩写不是程序员常见某些算法的简称(B)

A、KMP

B、MMP

C、DP

D、A*

8、有一种玻璃杯质量确定但未知,需要检测。现在有一栋 100 层的大楼,该种玻璃杯从某一层楼扔下,刚好会碎。现给你两个杯子,问怎样检测出这个杯子的质量,即找到在哪一层楼刚好会碎? 现在有一种解法是从数学方程的角度出发。假设最少尝试次数为 x ,那么,第一个杯子必须要从第 x 层扔下,因为:如果碎了,前面还有 x - 1 层楼可以尝试,如果没碎,后面还有 x-1 次机会。

如果没碎,第一个杯子,第二次就可以从 x +(x - 1)层进行尝试,这里加上 x - 1,是因为当此时,第一个杯子碎了,第二个杯子还有可以从 x + 1 到 ( x + (x - 1) - 1 ) 层进行尝试,有 x - 2 次机会。

如果还没碎,那第一个杯子,第三次从 x + (x - 1) + (x - 2) 层尝试。不管杯子碎或者没碎,都有 x - 3 次尝试机会,依次类推。

那么经过 x 次的尝试可以确定最高的楼层为 x + (x - 1) + (x - 2) + … + 1 = x(x+1) / 2 。

请问,x 是 (C)?

A、2

B、10

C、14

D、25

9、假设你在参加一个春节抽奖游戏,主持人在三个红包里面分别放了 1 块钱、1 块钱和 1000 块钱。你选中哪一个,你就可以领到对应的钱。当你选定一个红包之后,主持人独自翻开剩下两个红包,然后将有一块钱的红包给你看。此时,给你一次机会选另外一个红包。请问:应不应该换?(A)

A、换

B、不换

C、可以换,但没必要

D、都可以

10、LeetCode 第 9 号问题是回文数求解,它有很多种解法,下面动图的解法属于(B )

A、语文解法

B、数学解法

C、英语解法

D、体育解法

二、填空题(共计 20 分)

11、第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 (1962 ) 年才出现,中间用了 (16 ) 年的时间。

12、我们常说有五大算法,它们分别是 —— 分治算法、动态规划、(回溯 )、( 贪心)、分支限定。

13、印度数学奇才拉马努金(Srinivasa Ramanujan)是二十世纪最传奇的数学家之一,他独立发现了近 3900 个数学公式和命题,虽然他几乎没受过正规的高等数学教育,却能凭直觉写出不平凡的定理和公式,且往往被证明是对的,他留给世人的笔记引发了后来的大量研究。

下面这张图就是他的一项发现。

请问,当 k = 0 时,π 的值为(3.1415927 )

三、编程题(共计 30 分)

喜羊羊和灰太狼用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。喜羊羊和灰太狼轮流进行,喜羊羊先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设喜羊羊和灰太狼都发挥出最佳水平,当喜羊羊赢得比赛时返回 true ,当灰太狼赢得比赛时返回 false 。

现在需要你设计一个算法,来分析它们的输赢情况。

要求:请使用尽可能少的代码将下列代码补充完整,不得超过两行代码。

//@author:程序员小吴
class Solution {
    public boolean stoneGame(int[] piles) {
        //请在这里将代码补充完整
      //参考答案:
      return true;
    }
}

  • 分享

    有什么新发现就分享给大家吧!

    191 引用 • 1571 回帖 • 174 关注
  • 算法
    236 引用 • 145 回帖 • 10 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    210 引用 • 1145 回帖 • 430 关注
回帖   
请输入回帖内容...