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

摘要:
题目来源力扣算法题目66加一计算题目详细描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储一个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例1:输入:[1,2,3]输出:[1,2,4]解释:输入数组表示数字123。=9){digits[length-1]=digits[length-1]+1;returndigits;}booleanaddFlag=true;//如果数组的所有位都是9的情况进行处理for{if(digits[j]!

题目来源 力扣算法题目66 加一计算

题目详细描述:

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

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

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

示例1:

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

示例2:

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

在解题的过程中注意出现的999 或者是89 涉及9的操作

本次解题采用的是正向思维的方式,

思路如下:

case1:如果是普通的情况 只用给最后一位加一即可(最后一位不是9的情况)

case2:如果是9,99,999,全9的情况,只需要数组扩展一位 首位填1

case3:如果是普通的情况 用while循环进行处理

代码如下:

class Solution {
    public int[] plusOne(int[] digits) {
        int length = digits.length;
        // 如果最后一位不是9的情况的处理方式
        if(digits[length - 1] != 9){
            digits[length - 1] = digits[length - 1] + 1;
            return digits;
        }
        boolean addFlag = true;
        // 如果数组的所有位都是9的情况 进行处理
        for(int j = 0; j<length;j++){
            if(digits[j] != 9){
                addFlag = false;
            }
        }
        if(addFlag){
            int[] result = new int[length+1];
            for(int k=0;k<length+1;k++){
                if(k==0){
                    result[k] = 1;
                }else{
                    result[k] = 0;
                }
            }
            return result;
        }
        
        // 如果最后一位是9的情况
        int i = length-1;
        // 声明一个新的数组 
        int[] array = new int[length];
        while(digits[i] == 9){
            // 如果是最后一位 只是进位
            array[i] = 0;
            array[i-1] = digits[i-1]+1;
            i--;
        }
        // 判断如果补位没补完,把剩下的位数补充完整
        if(i == 0 && length>1 && digits[1] != 9){
            array[i] = digits[i];
        }
        if(i>0){
            for(int m = 0;m<i; m++){
                array[m] = digits[m];
            }
        }
        return array;
    }
}

免责声明:文章转载自《给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot 获取前端页面参数的集中方式总结log.io日志实时显示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

vue之文本渲染

以前,我们一直使用{{}}的形式来呈现文本,但除了此方法之外,vue还提供了其他几种常见的文本呈现方法:v-text:更新元素的innerTextv html:更新元素一次的innerHTMLv:静态插值v-pre:以原始格式输出v-cooke:保留元素上的指令,直到相关实例完成编译˂!幸运的是,Vue还提供了v-text和v-html来呈现文本或元素。...

zookeeper 日志输出到指定文件夹

最近,我在学习ZookeperStormKafka。顺便说一下,我在本地建立了一个集群。我遇到了Zookeeper日志输出路径的问题。我发现设置log4j。Zookeeper中的属性无法解决日志路径问题。我发现解决方案如下:1.修改log4j属性,您应该能够更改它。我更改了红色粗体,但仍然没有生效。#定义要移动的默认值...

C# winform开发嵌套Chrome内核浏览器(WebKit.net)开发(一)

//Www.cnblogs.com/Maxq/p/6566558.htmlWebKit.net是WebKit的一个net包。使用它,。net程序可以非常方便地集成和使用webkit作为加载网页的容器。EventArgse){WebKit.WebKitBrowser=newWebKitBrowser();this.Controls.Add(浏览器);...

【转载】 银河麒麟V10系统安装U盘制作

在制作U盘安装盘的过程中,Kylin系统的ISO映像文件比较大,因此很耗时。创建完成后,“写入硬盘映像”对话框将自动关闭。...

图卷积神经网络(GCN)入门

不得不专门为GCN开一个新篇章,表示其重要程度。图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。总地来说,图数据既要考虑节点信息,也要考虑结构信息,图卷积神经网络就可以自动化地既学习节点特征,又能学习节点与节点之间的关联信息。GCN的本质目的就是用来提取拓扑图的空间特征。理解图卷积神经网络主要有两类,一类是基于空间域或顶...

将HTML文件转换为MD文件

html格式转md格式#模块html2textpipinstallhtml2text/pip3installhtml2text测试:importhtml2textashttext_maker=ht.HTML2Text()#读取html格式文件withopen('./*.html','r',encoding='UTF-8')asf:htmlpage=f.rea...