diff --git a/problems/0078.子集.md b/problems/0078.子集.md index fb4a8740..747b89d1 100644 --- a/problems/0078.子集.md +++ b/problems/0078.子集.md @@ -263,6 +263,63 @@ var subsets = function(nums) { }; ``` +C: +```c +int* path; +int pathTop; +int** ans; +int ansTop; +//记录二维数组中每个一维数组的长度 +int* length; +//将当前path数组复制到ans中 +void copy() { + int* tempPath = (int*)malloc(sizeof(int) * pathTop); + int i; + for(i = 0; i < pathTop; i++) { + tempPath[i] = path[i]; + } + ans = (int**)realloc(ans, sizeof(int*) * (ansTop+1)); + length[ansTop] = pathTop; + ans[ansTop++] = tempPath; +} + +void backTracking(int* nums, int numsSize, int startIndex) { + //收集子集,要放在终止添加的上面,否则会漏掉自己 + copy(); + //若startIndex大于数组大小,返回 + if(startIndex >= numsSize) { + return; + } + int j; + for(j = startIndex; j < numsSize; j++) { + //将当前下标数字放入path中 + path[pathTop++] = nums[j]; + backTracking(nums, numsSize, j+1); + //回溯 + pathTop--; + } +} + +int** subsets(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){ + //初始化辅助变量 + path = (int*)malloc(sizeof(int) * numsSize); + ans = (int**)malloc(0); + length = (int*)malloc(sizeof(int) * 1500); + ansTop = pathTop = 0; + //进入回溯 + backTracking(nums, numsSize, 0); + //设置二维数组中元素个数 + *returnSize = ansTop; + //设置二维数组中每个一维数组的长度 + *returnColumnSizes = (int*)malloc(sizeof(int) * ansTop); + int i; + for(i = 0; i < ansTop; i++) { + (*returnColumnSizes)[i] = length[i]; + } + return ans; +} +``` + ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw) diff --git a/problems/0455.分发饼干.md b/problems/0455.分发饼干.md index 8e20c402..bae1566c 100644 --- a/problems/0455.分发饼干.md +++ b/problems/0455.分发饼干.md @@ -217,6 +217,29 @@ var findContentChildren = function(g, s) { ``` +C: +```c +int cmp(int* a, int* b) { + return *a - *b; +} + +int findContentChildren(int* g, int gSize, int* s, int sSize){ + if(sSize == 0) + return 0; + + //将两个数组排序为升序 + qsort(g, gSize, sizeof(int), cmp); + qsort(s, sSize, sizeof(int), cmp); + + int numFedChildren = 0; + int i = 0; + for(i = 0; i < sSize; ++i) { + if(numFedChildren < gSize && g[numFedChildren] <= s[i]) + numFedChildren++; + } + return numFedChildren; +} +``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)