一道面试算法求解

假设m=7时,7=1 2 4,用集合1,2,4中元素进行组合能够组合为1到6 6=2 4 5=1 4 4=4 3=1 2 2=2 1=1 用的都是1,2,4集合中的元素,求能满足这种条件集合的元素个数最小时的集合是什么,比如m=7时集合为1,2,4元素个数为3最小所以输出1,2,4#字节跳动#
全部评论
加号怎么没了
点赞 回复 分享
发布于 2018-05-20 00:04
我有个解法 记下当前集合中最大的数字和不包括最大数字的所有其他集合内数字之和 然后下一个数字就是最大数字加上其他数字之和+1 比如当前最大是max 集合内为[],  集合内元素不包括最大元素和sum=0 那么下一个数字就是0 + 0 + 1 = 1 这时更新max=1, [1], sum=0 下一个数字就是1 + 0 + 1 = 2 这时更新max=2, [1, 2], sum=1 下一个数字就是1 + 2 + 1 = 4 这时更新max=4, [1, 2, 4], sum=3 下一个数字就是3 + 4 + 1 = 8 大于7 终止 返回集合即可
点赞 回复 分享
发布于 2018-05-20 00:17
二进制的思想,我也被问到这道题了
点赞 回复 分享
发布于 2018-05-20 00:24
应该有的数不满足这个条件吧
点赞 回复 分享
发布于 2018-05-20 00:35
1 2 4 8这样排列,和不超过给定的数,最后再补上一个余数,比如8:1,2,4,1 13:1,2,4,6 21:1,2,4,8,6
点赞 回复 分享
发布于 2018-05-20 00:55

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
评论
点赞
13
分享
牛客网
牛客企业服务