• 加一


    加一

    描述

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

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

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

    示例 1:

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

    示例 2:

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

    思路

    • 不同数组操作主要分为最后一位为9的和不为9的,若最后一位不为9,则最后一位加一输出即可
    • 若最后一位为9,又可分为全为9和不全为9,全为9时数组大小加一,且除第一位为1外其他全为0
    • 不全为9时,从后往前遍历数组,若为9则置为0,若不为9则加一直接返回
    /**
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* plusOne(int* digits, int digitsSize, int* returnSize){
        int* result;
        //最后一位不是9
        if(digits[digitsSize - 1] != 9) {
            result = (int*)malloc(sizeof(int)*digitsSize);
            memcpy((void*)result,(void*)digits,sizeof(int)*digitsSize);
            *returnSize = digitsSize;
            result[digitsSize - 1] = digits[digitsSize - 1] + 1;
            return result;
        }
        
        /*最后一位是9*/
        for(int i=digitsSize - 1;;i--) {
            if(digits[i] != 9)
                break;
            if(i == 0) {
                //全都为9
                *returnSize = digitsSize + 1;
                result = (int*)malloc(sizeof(int)*(*returnSize));
                result[0] = 1;
                for(int j=1;j<*returnSize;j++)
                    result[j] = 0;
                return result;
            }
        }
        //不全为9
        *returnSize = digitsSize;
        result = (int*)malloc(sizeof(int)*(digitsSize));
        int not_9_num = digitsSize - 1;
        for(;not_9_num >= 0;not_9_num--) {
            if(digits[not_9_num] != 9)
                break;
            result[not_9_num] = 0;
        }
        memcpy(result,digits,sizeof(int) * (not_9_num + 1));
        result[not_9_num] = digits[not_9_num] + 1;
        return result;
    }
    
  • 相关阅读:
    将纸质照片转成数字报名照
    华为手机如何下载google play商店中的apk
    大疆Mavic 2发布
    [转] Spring使用Cache、整合Ehcache
    [转] spring-boot集成swagger2
    [转] Intellij IDEA快捷键与使用小技巧
    [转] 这个常识很重要,教你如何区分JEDEC 1600内存与XMP 1600内存
    [转] 下载文件旁边附的MD5/SHA256等有什么用途?
    Openresty 健康检查
    Vuforia图像追踪,动态创建的对象隐藏显示的坑
  • 原文地址:https://www.cnblogs.com/ekkone/p/11667164.html
Copyright © 2020-2023  润新知