[开心IT面试题] 根据上排给出十个数,在其下排填出对应的十个数

题目:

上排给出十个数,在其下排填出对应的十个数
要求下排每个数都是先前上排那十个数在下排出现的次数。
上排的十个数如下:
[0,1,2,3,4,5,6,7,8,9]

 

思路:

1)设下排数为[a0, a1, a2, a3, a4, a5, a6, a7, a8, a9]

a0表示为0在下排出现的次数,以此类推……a9表示为9在下排出现的次数。

2)不管上排10个数分别出现几次,下排数都只有10个数,也就是只有10个位置放上排的数,

所以上排10个数分别出现的次数总和等于10,也就是a0+a1+a2+a3+a4+a5+a6+a7+a8+a9=10。

3)先不考虑2)的结论。假设a0 = 9;9出现1次,所以a9 = 1;1出现1次,所以a1 = 1,此时1出现2次,

所以a1不能等于1;推出a1 = 2, a2 = 1。(很明显0不可能出现9次,这时需再往前推算0的个数。)

4)根据3)的结论,a1和a2不可能为0,a0也不会为0;0出现的次数对应的值也不会为0。

所以再结合2)的结论,可以推出a0 = 6, a6 = 1;

 

结果:

上排:[0,1,2,3,4,5,6,7,8,9]

下排:[6,2,1,0,0,0,1,0,0,0]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值