博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode——Combinations
阅读量:4138 次
发布时间:2019-05-25

本文共 1947 字,大约阅读时间需要 6 分钟。

刚开始的思路是 一个大小是K的数组,最开始的值是(比如k=4)1 2 3 4,然后最末尾递增到n,然后倒数第二位再开始...可以用for循环,但是有k个嵌套for循环,不知道该怎么实现。还是用了最笨的方法:

void ComBT(int n, int i, int k, int *flag, int** ret, int *returnSize,int *column){	if (i == n)	{		int j, count = 0;		for (j = 0; j
n - k && i > n/2; i--) { size *= i; } *returnSize = 0; int **ret = (int**)malloc(size*sizeof(int*)); int *column = (int*)malloc(size*sizeof(int)); *columnSizes = column; int *flag = (int*)calloc(n, sizeof(int)); ComBT(n, 0, k, flag, ret, returnSize,column); return ret;}
发生的错误:

① column的值全都为k,想用memset,原来memset是对每一个字节置位

②ret的大小,以前有不明确大小的试过realloc,但是当空余的空间不够时会重新开辟一个空间,把数据放进去,这对递归来说是不可行的,,这道题的大小可能引起overflow,测试用例最大为n=26

③判断太冗余了,可以加个计数改进一下

找到了我的思路的实现:(转自:http://www.cnblogs.com/kaituorensheng/p/3706360.html)

vector< vector
> ret;vector
a;void build(int dep, int maxDep, int n, int start){ if (dep == maxDep) { ret.push_back(a); return; } for (int i = start; i <= n; ++i) { a[dep] = i; build(dep + 1, maxDep, n, i + 1); }}vector< vector
> combine(int n, int k){ a.resize(k); ret.clear(); build(0, k, n, 1); return ret;}

非常漂亮!

也可以不用for循环:

转自:http://blog.csdn.net/sunbaigui/article/details/8980735

class Solution {  //using recurrence to get these combinations  public:      vector
> combine(int n, int k) { // Start typing your C/C++ solution below // DO NOT write int main() function vector
temp; vector
> ans; combine_rec(ans , temp , n , k , 1); return ans; } void combine_rec(vector
> &ans , vector
& temp , int n , int k , int index) { if (k == 0) ans.push_back(temp); else if (k > 0 && index <= n) { temp.push_back(index); combine_rec(ans , temp , n , k-1 , index+1); temp.pop_back(); combine_rec(ans , temp , n , k , index+1); } } };

你可能感兴趣的文章
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>
Linux修改ip
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
IPS开发手记【一】
查看>>
Java通用字符处理类
查看>>
文件上传时生成“日期+随机数”式文件名前缀的Java代码
查看>>
Java代码检查工具Checkstyle常见输出结果
查看>>
北京十大情人分手圣地
查看>>
Android自动关机代码
查看>>
Android中启动其他Activity并返回结果
查看>>
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>