本文最后更新于:3 个月前
从n个正整数中找出满足如下条件的组合数量,满足条件:1个数或者2个数之和,大于等于n,每个数最多组合一次
例如:输入[3, 7, 1, 5, 9],n = 8,输出:3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
let input = [3, 7, 1, 5, 9] print("输入:", input) let n = 8 print("输入:", n)
var sInput = input.sorted { e1, e2 in return e1 > e2 ? false : true } var count = 0
var nInput: [Int] = [] for e in sInput { if e >= n { count += 1 } else { nInput.append(e) } } sInput = nInput; while sInput.count >= 2 { var cl: [Int] = [] let last = sInput[sInput.count - 1] for i in 0 ..< (sInput.count - 1) { let e = sInput[i]; if (e + last) >= n { count += 1 cl.append(i); cl.append(sInput.count - 1); break } else { cl.append(i); } } for e in cl.reversed() { sInput.remove(at: e) } } print("输出:", count)
|
1 2 3
| 输入: [3, 7, 1, 5, 9] 输入: 8 输出: 3
|