讨论/《初级算法》 - 加一/
《初级算法》 - 加一

C 语言

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize)
{
    int jinwei = 0;

    for(int i = digitsSize-1; i >= 0; i--) {
        jinwei = (digits[i] + 1) / 10;
        digits[i] = (digits[i] + 1) % 10;
        if(jinwei == 0){
            break;
        }
    }
    int len = digitsSize;
    if(jinwei == 1){ // 返回数组长度增加一个元素
        len = digitsSize + 1;
    }
    int *res = (int *)malloc(sizeof(int) * len);
    if(res == NULL){
        *returnSize = 0;
        return res;
    }
    if(jinwei == 0){
        memcpy(res, digits, sizeof(int)*digitsSize);
        // memcpy_s(res, digitsSize*sizeof(int), digits, sizeof(int)*digitsSize);
    }else{
        res[0] = 1;
        memcpy(&res[1], digits, sizeof(int)*digitsSize);
        // memcpy_s(&res[1], digitsSize * sizeof(int), digits, sizeof(int)*digitsSize);
    }
    
    *returnSize = len;
    return res;
}
展开全部 128 讨论