两道算法面试题

http://topic.csdn.net/u/20120313/10/8feef8d4-6cd6-41a4-8955-a1bf7f9734b8.html

1、有81个选手,9个赛道,要求选出前4名。需要多少场?

分9组先跑9场小组赛,再用9个第1跑1场决赛,共10场,此时可以确定的只有第1名。
那么2至4名有可能是谁呢?

特殊情况下,有可能1-4名都被分到了同一组,并且在小组赛里,2-4已经被淘汰了,因此需要把他们找回来。找到小组赛中输给冠军的2-4名,共3匹马。同理找到小组赛输给第2的2、3名,2匹马。输给第3的第2名,1匹马。如果2-4名是在小组赛中被淘汰了,那么只可能在这6匹马中。用这6匹马+决赛的2-4名,共9匹马,再跑一场,就可以找到真正的2-4名了。

2、有N(很大)个数,从里面选出第K(很小)大的数,要求时间复杂度尽可能的小。

第二题挺简单的,就和选出n个数最小的一个一样。循环打擂。先在前k个数选出第k个数,记下它位置记为Item。然后依次走下去。碰到比大的的跳过。碰到比它小的,更改Item所指位置。

时间复杂度为O(n).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值