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)
|
||||
|
@ -270,6 +270,40 @@ def sorted_squares(nums)
|
||||
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
|
||||
class Solution {
|
||||
@ -300,6 +334,7 @@ class Solution {
|
||||
```
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||
|
Reference in New Issue
Block a user