mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-13 14:10:38 +08:00
Merge pull request #704 from KingArthur0205/remote
添加 0077.组合优化.md C语言版本、添加 0977.有序数组的平方.md C语言版本
This commit is contained in:
@ -242,8 +242,59 @@ var combine = function(n, k) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C:
|
||||||
|
```c
|
||||||
|
int* path;
|
||||||
|
int pathTop;
|
||||||
|
int** ans;
|
||||||
|
int ansTop;
|
||||||
|
|
||||||
|
void backtracking(int n, int k,int startIndex) {
|
||||||
|
//当path中元素个数为k个时,我们需要将path数组放入ans二维数组中
|
||||||
|
if(pathTop == k) {
|
||||||
|
//path数组为我们动态申请,若直接将其地址放入二维数组,path数组中的值会随着我们回溯而逐渐变化
|
||||||
|
//因此创建新的数组存储path中的值
|
||||||
|
int* temp = (int*)malloc(sizeof(int) * k);
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < k; i++) {
|
||||||
|
temp[i] = path[i];
|
||||||
|
}
|
||||||
|
ans[ansTop++] = temp;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int j;
|
||||||
|
for(j = startIndex; j <= n- (k - pathTop) + 1;j++) {
|
||||||
|
//将当前结点放入path数组
|
||||||
|
path[pathTop++] = j;
|
||||||
|
//进行递归
|
||||||
|
backtracking(n, k, j + 1);
|
||||||
|
//进行回溯,将数组最上层结点弹出
|
||||||
|
pathTop--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int** combine(int n, int k, int* returnSize, int** returnColumnSizes){
|
||||||
|
//path数组存储符合条件的结果
|
||||||
|
path = (int*)malloc(sizeof(int) * k);
|
||||||
|
//ans二维数组存储符合条件的结果数组的集合。(数组足够大,避免极端情况)
|
||||||
|
ans = (int**)malloc(sizeof(int*) * 10000);
|
||||||
|
pathTop = ansTop = 0;
|
||||||
|
|
||||||
|
//回溯算法
|
||||||
|
backtracking(n, k, 1);
|
||||||
|
//最后的返回大小为ans数组大小
|
||||||
|
*returnSize = ansTop;
|
||||||
|
//returnColumnSizes数组存储ans二维数组对应下标中一维数组的长度(都为k)
|
||||||
|
*returnColumnSizes = (int*)malloc(sizeof(int) *(*returnSize));
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < *returnSize; i++) {
|
||||||
|
(*returnColumnSizes)[i] = k;
|
||||||
|
}
|
||||||
|
//返回ans二维数组
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||||
|
@ -270,6 +270,40 @@ def sorted_squares(nums)
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
C:
|
||||||
|
```c
|
||||||
|
int* sortedSquares(int* nums, int numsSize, int* returnSize){
|
||||||
|
//返回的数组大小就是原数组大小
|
||||||
|
*returnSize = numsSize;
|
||||||
|
//创建两个指针,right指向数组最后一位元素,left指向数组第一位元素
|
||||||
|
int right = numsSize - 1;
|
||||||
|
int left = 0;
|
||||||
|
|
||||||
|
//最后要返回的结果数组
|
||||||
|
int* ans = (int*)malloc(sizeof(int) * numsSize);
|
||||||
|
int index;
|
||||||
|
for(index = numsSize - 1; index >= 0; index--) {
|
||||||
|
//左指针指向元素的平方
|
||||||
|
int lSquare = nums[left] * nums[left];
|
||||||
|
//右指针指向元素的平方
|
||||||
|
int rSquare = nums[right] * nums[right];
|
||||||
|
//若左指针指向元素平方比右指针指向元素平方大,将左指针指向元素平方放入结果数组。左指针右移一位
|
||||||
|
if(lSquare > rSquare) {
|
||||||
|
ans[index] = lSquare;
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
//若右指针指向元素平方比左指针指向元素平方大,将右指针指向元素平方放入结果数组。右指针左移一位
|
||||||
|
else {
|
||||||
|
ans[index] = rSquare;
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//返回结果数组
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
PHP:
|
PHP:
|
||||||
```php
|
```php
|
||||||
class Solution {
|
class Solution {
|
||||||
@ -300,6 +334,7 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||||
|
Reference in New Issue
Block a user