把自己搞暈之外,還要多做拆開再合起來組成數字,是在自找麻煩嗎 囧
但暫時不想重寫了,先降子XD
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int maximumSwap(int num) {
int *stack = calloc (9 , sizeof (int));
int top = -1;
int running = num;
while (running >0){
stack[++top] = (running %10);
running /= 10;
}
if (num==0)
stack[++top] =0;
int max=INT_MIN;
int max_idx = 0;
int *rightmax = calloc (top+1 , sizeof (int));
for (int i=0; i<=top;i++){
rightmax[i]= max_idx;
if (stack[i]>max)
{
max = stack[i];
max_idx = i;
rightmax[i]=i;
}
}
for (int i=top; i>=0; i--){
if (stack[i]<stack[rightmax[i]]){
swap(&stack[i],&stack[rightmax[i]]);
break;
}
}
int ret = 0;
while (top >=0)
ret = ret*10+stack[top--];
return ret;
}
沒有留言:
張貼留言