llllmz

导航

66. 加一c

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
void reverse(int* a,int n){
    int head=0,tail=n-1;
    while(head<=tail){
        int t=a[head];
        a[head]=a[tail];
        a[tail]=t;
        head++;
        tail--;
    }
}

void f(int* digits,int digitsSize,int* returnSize,int* array,int index,int tag){
    if(index>digitsSize) return;
    if(index==digitsSize&&tag==0){
        (*returnSize)=digitsSize;
        return;
    } 
    if(index==digitsSize && tag==1){
        array[index]=1;
        (*returnSize)=digitsSize+1;
        return;
    }
    if(digits[index]==9&&tag==1){
        tag=1;
        array[index]=0;
    }else if (tag==0){
        array[index]=digits[index];
    }else if(tag==1){
        array[index]=digits[index]+1;
        tag=0;
    }
    f(digits,digitsSize,returnSize,array,index+1,tag);
}

int* plusOne(int* digits, int digitsSize, int* returnSize) {
    reverse(digits,digitsSize);
    *returnSize=0;
    int* array=(int*)malloc(sizeof(int)*(digitsSize+1));
    f(digits,digitsSize,returnSize,array,0,1);
    reverse(array,*returnSize);
    return array;
}

结果:

posted on 2024-03-15 21:23  神奇的萝卜丝  阅读(14)  评论(0)    收藏  举报