找到最小的整数值1,这样就没有元素的子集

时间:2016-05-21 02:46:47

标签: java

很难理解这个问题要求我做什么。我没有要求任何代码,我只想解释这个问题是什么,也许是如何攻击它。给定正整数的排序数组,找到最小的整数值,x大于或等于1,使得数组中的元素子集不等于x。数组按非递减顺序排序,可能包含重复项。例如,输入{1,1,1,1,2)输出7,输入{3,4,5}输出1,输入{1,3,9输出2。

2 个答案:

答案 0 :(得分:0)

好吧,我会通过输入aray,让我们看看(1,1,1,1,2)我拿1.没有数字小于1可能是输出。让我们在输入中取下一个数字。 1.i已经检查过,尝试将其添加到上一个。结果2.输出可以是1?不,我们之前说过。输入的下一个元素是1.将它添加到前一个给出2,我检查了它。将其添加到输入中的第一个元素。我们有3.但是不能输出小于3且大于0的数字。输入中的下一个数字是1,因为它是类比的。下一个输入数字是2.如果我们递归地尝试将它与之前的结果相加,我们得到总和6.然后7是通过对输入数组中的任何元素求和而得不到的最小数字。我的意思是,如果你对输入中的sumany数字,以及它们的任何计数,并将总和写入纸张并对其进行排序,那么你试图找到不在结果列表中的最小数字x

答案 1 :(得分:0)

看起来像一个简单的问题。你基本上是在解决X.一个数字介于1和所有数组值之和+ 1

之间
[1, 1, 1, 1, 2] > sum = 6
[3, 4, 5] > sum = 12
[1, 3, 9] > sum = 13

标准是X不能是数组中的数字或数组中包含的任何数字的总和。

解释这个问题的最简单方法是:“给定数组的数量, 数组中包含的最小数字 >不能 通过添加来制作。“

拿第一个阵列。 7是输出,因为给定数组的值,您可以通过添加数组的任何/所有数字来获得数字1,2,3,4,5,6但不是7。

拿第二个数组。 1是输出,因为你可以得到数字3,7,8,9 ......这个很简单。数组中最小的数字是>比1 ...所以答案是1。

拿第三个数组。 2是输出,因为你可以得到数字1,3,4,10,12,13.1和3存在..但不是2。

可能一个好的算法包括在给定任何整数数组的情况下创建所有可能求和的有序集合。问题的答案是1,如果集合中的第一个数字是>比1或设置[n] + 1,其中set [n] = 1