请问这个问题的算法如何优化

1000个人,分两种:好人坏人。里面最少有501个是好人。
如果抽出来两个人,那么好人会说出另外一个人到底是好人还是坏人,而坏人的答案是不确定的。(类似于真话假话)
现在要用一个算法,找出一个一定是好人的人

最简单的方法:
那一个人出来和所有人放一起
如果超过501个人说他是好的,那他一定是好的,否则一定是坏的
这样的方法是可行的,但是复杂度是n方

要求要优化到n
想了半天都没想出来了,请高手支招

问题的关键是:一定要考虑最差情况。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值