题目:

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

说明:

所有数字都是正整数。
解集不能包含重复的组合。

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]

解答:

  1. var combinationSum3 = function(k, n) {
  2. let temp = [];
  3. const ans = [];
  4. const check = (mask, k, n) => {
  5. temp = [];
  6. for (let i = 0; i < 9; ++i) {
  7. if ((1 << i) & mask) {
  8. temp.push(i + 1);
  9. }
  10. }
  11. return temp.length === k && temp.reduce((previous, value) => previous + value, 0) === n;
  12. }
  13. for (let mask = 0; mask < (1 << 9); ++mask) {
  14. if (check(mask, k, n)) {
  15. ans.push(temp);
  16. }
  17. }
  18. console,log(ans)
  19. //return ans;
  20. };
  21. k = 3; n = 7;
  22. combinationSum3(k, n);

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。