2 回答
TA贡献1816条经验 获得超4个赞
好的,如评论中所述,如果您需要特定数量的前3个值,则可以执行以下简单操作:
let amount = 6;
let highest = amount - 1,second_highest = amount - 2,third_highest = amount - 3;
let possibilities = [
highest + highest,
highest + second_highest,
highest + third_highest
];
console.log(possibilities);
TA贡献1802条经验 获得超10个赞
我不知道有什么更好的解决方案,但是是的,您需要先检查一些条件。
If(amount <= 0) return 'Invalid amount, Please enter a valid amount"
因此,如果有人输入负值或零值,则您的循环将进入无限循环,并使情况变得更糟。
if(amount === 1) return '1 possible combination'
由于小于1的数量仅是0,并且0的组合仅是1,因此您无需解析整个循环以获取6位数字或n位数字以获取0,因此它将获得1而不是N(数字位数)的复杂度。
对于大于1的数量,您可以创建手动循环,例如在这里您为2位数字创建了2个循环,为6位数字创建了6个循环,为此更好地创建了动态逻辑以自动创建循环数。
您需要考虑1111
,1112
这种类型的组合也是正确的吗?或者,如果仅需要1234、2134、2314这种情况?这可以非常简单地完成。
对于复制,您可以将组合存储为键值对。然后Object.Keys将是您的组合。
添加回答
举报