题目:

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example:

Input: n = 4, k = 2
Output:
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
]

代码:

class Solution {
public:vector<vector<int>> combine(int n, int k) {vector<vector<int>> res;if (n < k)return res;int ori_k = k;if (k > n / 2)k = n - k;set<set<int>> cur_res;set<int> tmp;cur_res.insert(tmp);for (int i = 0; i < k; i++){set<set<int>> update_res;for (set<set<int>>::iterator iter = cur_res.begin(); iter != cur_res.end(); iter++){for (int j = 1; j <= n; j++){set<int> cbnt = *iter;cbnt.insert(j);if (cbnt.size() == i + 1){update_res.insert(cbnt);}}}cur_res = update_res;}if (ori_k != k){set<int> total;for (int i = 1; i <= n; i++)total.insert(i);set<set<int>> update_res;for (set<set<int>>::iterator iter = cur_res.begin(); iter != cur_res.end(); iter++){set<int> cur = *iter;set<int> cplm = total;for (set<int>::iterator jter = cur.begin(); jter != cur.end(); jter++) {cplm.erase(*jter);}update_res.insert(cplm);}cur_res = update_res;}for (set<set<int>>::iterator iter = cur_res.begin(); iter != cur_res.end(); iter++){set<int> cur_set = *iter;vector<int> cur_nums;for (set<int>::iterator jter = cur_set.begin(); jter != cur_set.end(); jter++){cur_nums.push_back(*jter);}res.push_back(cur_nums);}return res;}
};

LeetCode | 77. Combinations相关推荐

  1. 【DFS】LeetCode 77. Combinations

    LeetCode 77. Combinations Solution1:我的答案 DFS,时间复杂度O(n!)O(n!)O(n!),空间复杂度O(n)O(n)O(n) class Solution { ...

  2. Leetcode 77. Combinations 组合

    Leetcode 77. Combinations 组合 标签 : Leetcode 题目地址: https://leetcode-cn.com/problems/combinations/ 题目描述 ...

  3. LeetCode 77. Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  4. [leetcode] 77. Combinations @ python

    原题 Given two integers n and k, return all possible combinations of k numbers out of 1 - n. Example: ...

  5. [LeetCode Python3]77. Combinations回溯

    77. Combinations class Solution:def __init__(self):self.res = []def trackback(self, track, index, n, ...

  6. LeetCode | 0077. Combinations组合【Python】

    LeetCode 0077. Combinations组合[Medium][Python][回溯] Problem LeetCode Given two integers n and k, retur ...

  7. leetcode 77. Combinations-排列|递归|非递归|Java|Python

    原题链接:77. Combinations [思路-Java.Python]递归实现 采用回溯算法.这是一道 NP 难问题,时间复杂度没办法提高,用一个循环递归处理子问题,问题的终止条件是每个组合中的 ...

  8. LeetCode.77. 组合

    LeetCode.77. 组合 难度:中等 这道题属于回溯的经典题目: 回溯模板: void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集 ...

  9. 【LeetCode】77. Combinations 解题报告(Python C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:递归 方法二:回溯法 日期 题目地址:htt ...

最新文章

  1. FC SAN与IP SAN的比较
  2. 业界丨2018,人工智能革命走向风口浪尖
  3. oracle中的一些基本概念
  4. 马哥学习笔记——shell变量类型
  5. play mysql_play framework 2.0 使用 mysql
  6. 华为的冬天(来自网路)---任正非
  7. 轻量级OLAP(一):Cube计算
  8. 基于SSH2做一个24小时订单分析表格
  9. 关于insert语句的插入问题
  10. C++11新特性 右值引用与移动语义
  11. 完全二叉树的叶子节点数公式_二叉树基础知识
  12. Python 图像处理 OpenCV (13): Scharr 算子和 LOG 算子边缘检测技术
  13. 基于STM32F103的电子磁密码锁智能门禁原理图PCB程序设计
  14. Windows强制关机之后,自动修复失败,无法开机的问题解决
  15. pytho lambda表达式
  16. ITK入门教程(12)点集之得到存储的点
  17. 一毕业就上了艘“火箭”,这群校招生在大公司创业
  18. 多连接数据库管理Navicat Premium 中文
  19. RK3399平台开发系列讲解(网络篇)7.11、图解Linux网络包接收过程
  20. 超萌小萝莉因为不好好吃饭向妈妈道歉,超可爱!

热门文章

  1. 用树莓派制作FM调频无线电发射器
  2. network-scripts目录下添加新网卡文件方法、nmcli修改NAME网卡名称和DEVICE一致
  3. 软件开发架构模式浅谈:一些思考和实践记录
  4. Java获取客户端(浏览器)的MAC地址
  5. javascript serch indexOf chartAt用法
  6. Meta因数据泄漏被罚1700万欧元 数据安全合规将催生百亿美元市场
  7. PHP 开发 APP 接口--静态缓存篇
  8. 细菌、真菌和病毒的区别
  9. SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (deepsort)论文解析
  10. 如何把数据写入s50卡特定块_M1卡S50详细介绍