力扣每日一题——66.加一

力扣每日一题——66.加一

题目描述

在这里插入图片描述
在这里插入图片描述

代码注释

#include<stdio.h>
#include<stdlib.h> 
int* plusOne(int* digits, int digitsSize, int* returnSize){
    
    
	//开辟新数组 
    int* result = (int*)malloc(sizeof(int)*(digitsSize+1));
    //最高位进位的话改变数组长度 
    int k=digitsSize;
    int i = k-1;
    //非最高位+1情况 
    for( i = k-1;i>0;i--){
    
     
        if(digits[i]!=9){
    
    
            digits[i]+=1;
            break;
        }else{
    
    
            digits[i]=0;
        }
    }
    //最高位+1 
    if(i==0){
    
    
    	//最高位为9,则数组长度+1,最高位变为1,其余都为0 
        if(digits[0]==9){
    
    
        	result[0]=1;
            for(int j = 1;j<=digitsSize;j++){
    
    
                result[j]=0;
            }
            k++; 
        }else{
    
    //最高位不为9,则最高位+1,其余变为0 
            result[0]=digits[0]+1;
            for(int j = 1;j<digitsSize;j++){
    
    
                result[j]=0;
            }
        }
    }else{
    
    //非最高位+1则直接copy数组以返回 
        for(int j=0;j<digitsSize;j++){
    
    
            result[j]=digits[j];
        }
    }
    //数组长度赋值 
    *returnSize = k;
    return result;
}

猜你喜欢

转载自blog.csdn.net/Seanfly9105/article/details/113355184