int cmp(int *a, int *b) {
return *a - *b;
}
int find(int *arr, int len, int index) {
int i = index + 1, min = INT_MAX, ret = -1;
while(i<len) {
if(arr[i] > arr[index] && arr[i] < min) {
ret = i;
min = arr[i];
}
i++;
}
return ret;
}
void nextPermutation(int* arr, int len){
int i = 0, j=-1;
for(i=len-1; i>=0; i--) {
j = find(arr, len, i);
if(j >= 0){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
break;
}
}
if(j>=0)
qsort(arr+i+1, len-i-1, sizeof(int), cmp);
else
qsort(arr, len, sizeof(int), cmp);
}
leetcode-31. 下一个排列-C语言
最新推荐文章于 2023-01-03 15:27:43 发布