面试问题:发一个随机红包,100块钱给10我的。每一个人最多12块钱,最少6块钱。怎么分?

之前想过一个相似问题,就是没有每一个人最大、最小的得钱数的限制,之前的问题能够很好用随机数解决。
因而这个问题也被之前的思想带坑里了,把突破口彻底放在了如何处理每一个人的随机数上。
因而在面试时间就没有解决这个问题,直到面试结束本身安静下来,仔细想一想,发现思路错了。

我认为正确的思路是:

  1. 每一个人先得6块钱,这样剩下40块钱,以后每次拿出一块钱,随机分配给一我的,若是某我的的钱数达到了上限,那么这我的下次就没有了再获得钱的资格了。这样直到剩下钱都分配完。面试

  2. 固然在接口的实际处理上能够作些优化,例如剩下的钱每次随机分配的钱能够是随机的(固然这个随机要作一些限制,以避免一下就分配超额了),而后若是某我的钱+此次随机分配的钱>每一个人的上限,那么他就没有资格获得这个钱了。优化

  3. 随机分配也好实现,先算有几我的有资格获得这笔钱,随即一个数,决定给第几个符合资格的人。code

自我反思:

  • 开始的思路跑偏了,后来没有转过来。何时该继续深刻、何时该转变思路?该如何抉择,是很重要的事。说到底,仍是没有快速想清问题的状态,若是想清了也就知道开始的思路有问题,就知道该换换突破口了。接口

  • 在与面试交谈中,明显有些紧张。这更加影响了个人思考。无论外界如何,一我的的大脑永远都该是清醒的。这是一种很重要的能力,努力修行吧。随机数

相关文章
相关标签/搜索