牛客网shangyou游戏客户端开发面试题难点(Java语言)

逻辑题:

1.有大中小三个水桶,分别能盛水8、5、3升水,8升的桶装满了水,其他的桶空着,怎样能倒出四升水?

解:如下:8/8,0/5,0/3->3/8,5/5,0/3->0/8,5/5,3/3->3/8,5/5,0/3->3/8,2/5,3/3->6/8,2/5,0/3

->6/8,0/5,2/3->1/8,5/5,2/3->1/8,4/5,3/3

2.在一个密闭的房间内只有一盏灯,房间外面看不到里面,外面有三个开关,只有一个开关能让灯亮起来,可以任意操控开关,但只能有一次进房间的机会,进去后要立即说出正确的开关,怎么做到?

解:假设3个开关分别是ABC,先把A打开5分钟,再把A关掉.接着打开B后立即进入房间

如果灯亮着,则B是该灯的开关.如果没亮,则摸一下灯泡,如果是热的,则A是该灯的开关,否则是C

选择填空:

3.一棵完全二叉树的结点总数为18,其叶子结点数为_.

答:9

解析:由完全二叉树的定义可知,2^4-1<18<2^5-1,故可知该完全二叉树的深度为5,且18-(2^4-1) = 3,

1*2<3<2*2故叶子结点数为3+(2^3-2) = 9

若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
A.  单链表
B.  仅有头指针的单循环链表
C.  双链表
D.  仅有尾指针的单循环链表

D.仅有尾指针的单循环链表
[分析]根据题意要求,该线性表的存储应能够很方便地找到线性表的第一个元素和最后一个元素,A和B都能很方便地通过头指针找到线性表的第一个元素,却要经过所有元素才能找到最后一个元素;选项C双链表若存为双向循环链表,则能很方便地找到线性表的第一个元素和最后一个元素,但存储效率要低些,插入和删除操作也略微复杂;选项D可通过尾指针直接找到线性表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值