昨天,有网友给我抛出了一道算法题,说是一道头条的面试题。
听说,头条的算法是很牛的。我不一定会,所以,发到了群里。没想到大家的热情超出我的预期,很多人给出了思路,还有一些人给出了代码,有 js 实现的,有 Java 实现的,还有 C++ 实现的。
面试题如下:
给定一个数,算出平均值是整数的算法。例如:5 平均 2 份,则结果为,2 和 3;8 平均为 3 份,则为 2,3,3;11 平均 4 份,则为 2,3,3,3。求算法
有人说,这和微信发红包一样,其实完全不一样的。
抢红包的额度是从 0.01 到剩余平均值 * N (N 是一个系数,决定最大的红包值)之间。所以,差别还是挺大的。
网友 A 的 Java 版算法如下:
试了一下,运行结果完全正确!
网友 B 的算法思路:
找除数n大约被除数m的最小公倍数p,得最小商x=p/n ,然后计算除数m有最多a个x,则组合伟x0、x1...xa-1、m-a*x
并且进一步补充道:
比如11 分4份,4大于11的最小公倍数为12,12/4=3 这有最小 3个3,剩下的就是2
(8+1)/3=3 最多有2个3 这组合为 2、3、3
吃瓜群众!
网友 C 的 JavaScript 版算法:
整齐的队列,一排 666 !
网友 D 的 C++ 算法:
还有网友考虑了算法复杂度!
对于算法我很平庸,一窍不通。最能体现我的,还是马云那句“算了吧”。
对于懂算法的,这又是一道送分题!
以上,希望能对每个读者有所帮助,如果你想交流技术,请加我微信:xttblog,坑位不多了!