加一

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

思路

如果末尾为9,则会进1,不为9,直接加1,需要考虑到全为9时,该数会多一位,只需首位置为1,其余皆为0

实现代码(C语言)

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize) {
    
    int i=digitsSize-1;
    int *result=(int *)malloc(sizeof(int)*(digitsSize+1));
    while(i>=0){
        if(digits[i]<9){
             digits[i]=digits[i]+1;
              *returnSize=digitsSize;
              return digits;
        }
             
        digits[i]=0;
        i--;
        
    }
    *returnSize=digitsSize+1;
    result[0]=1;   
    return result;
}
int* plusOne(int* digits, int digitsSize, int* returnSize) {
    
    int count=0;
    int i=digitsSize-1;
    int *result=(int *)malloc(sizeof(int)*(digitsSize+1));
     while(i>=0){
        if(digits[i]==9){
            if(i==0){
                digits[i]=1;
                digits[digitsSize]=0;
                *returnSize=digitsSize+1;
                result=digits;   
                return result;
            }else{
                digits[i]=0;
            
                i--;
            }
           
        }else{
                digits[i]=digits[i]+1;
                *returnSize=digitsSize;
                 return digits;
              
        }
        
    }
    return digits;//根据leetcode机制,必须在这有一个return,虽然执行不到这
}
            

实现代码(Java)

public int[] plusOne(int[] digits) {
        
    int n = digits.length;
    for(int i=n-1; i>=0; i--) {
        if(digits[i] < 9) {
            digits[i]++;
            return digits;
        }
        
        digits[i] = 0;
    }
    
    int[] newNumber = new int [n+1];
    newNumber[0] = 1;
    
    return newNumber;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。 最高位数字存放在数组的首位, 数组中每个元...
    二木二三水阅读 234评论 0 1
  • 给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。 最高位数字存放在数组的首位, 数组中每个元...
    Eddiehe212阅读 434评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,275评论 0 13
  • 小时候我爸爸经常挂在嘴边的一句话是吃得苦中苦,方位人上人。这种人不在少数。他们过惯了苦日子,不敢去享受,闲下来就要...
    任性徐阅读 928评论 0 0
  • 一、收拾完房间后,该好好的玩耍喽!带孩子去哪里呢,当然想到了游乐场! 二、提取关键词练习。 提取几个可以串联起故事...
    up方方阅读 326评论 0 1