mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
@ -309,6 +309,72 @@ var permute = function(nums) {
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
C:
|
||||||
|
```c
|
||||||
|
int* path;
|
||||||
|
int pathTop;
|
||||||
|
int** ans;
|
||||||
|
int ansTop;
|
||||||
|
|
||||||
|
//将used中元素都设置为0
|
||||||
|
void initialize(int* used, int usedLength) {
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < usedLength; i++) {
|
||||||
|
used[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//将path中元素拷贝到ans中
|
||||||
|
void copy() {
|
||||||
|
int* tempPath = (int*)malloc(sizeof(int) * pathTop);
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < pathTop; i++) {
|
||||||
|
tempPath[i] = path[i];
|
||||||
|
}
|
||||||
|
ans[ansTop++] = tempPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
void backTracking(int* nums, int numsSize, int* used) {
|
||||||
|
//若path中元素个数等于nums元素个数,将nums放入ans中
|
||||||
|
if(pathTop == numsSize) {
|
||||||
|
copy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < numsSize; i++) {
|
||||||
|
//若当前下标中元素已使用过,则跳过当前元素
|
||||||
|
if(used[i])
|
||||||
|
continue;
|
||||||
|
used[i] = 1;
|
||||||
|
path[pathTop++] = nums[i];
|
||||||
|
backTracking(nums, numsSize, used);
|
||||||
|
//回溯
|
||||||
|
pathTop--;
|
||||||
|
used[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int** permute(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){
|
||||||
|
//初始化辅助变量
|
||||||
|
path = (int*)malloc(sizeof(int) * numsSize);
|
||||||
|
ans = (int**)malloc(sizeof(int*) * 1000);
|
||||||
|
int* used = (int*)malloc(sizeof(int) * numsSize);
|
||||||
|
//将used数组中元素都置0
|
||||||
|
initialize(used, numsSize);
|
||||||
|
ansTop = pathTop = 0;
|
||||||
|
|
||||||
|
backTracking(nums, numsSize, used);
|
||||||
|
|
||||||
|
//设置path和ans数组的长度
|
||||||
|
*returnSize = ansTop;
|
||||||
|
*returnColumnSizes = (int*)malloc(sizeof(int) * ansTop);
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < ansTop; i++) {
|
||||||
|
(*returnColumnSizes)[i] = numsSize;
|
||||||
|
}
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user