首页 > 其他分享 >leetode 加一

leetode 加一

时间:2024-04-08 13:32:22浏览次数:18  
标签:digits 取模 加一 10 int 数组 leetode

一、题目 

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

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

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

二、分析

        给数加一,要考虑到进位的问题,我们从数组的最后一个元素向前遍历,给当前的元素加一,然后对10取模,如果加1后为10的话,取模运算后就是0,下一步判断当前元素是否非零,非零的话返回当前的数组。有一个特殊的情况,如果数组的每一位都是9,加一后取模都是0,此时没有可返回的,所以我们要返回一个新的数组,且长度比原来大1,首位为1,其他位都是0.

代码如下:

class Solution {
    public int[] plusOne(int[] digits) {
        
        //思路:我们利用一个循环,来遍历这个数组,给每位上的数字加一,
        //加一完了之后,直接给当前位以10取模,如果加一之后是10的话,取模之后就是0
        //(反之加一之后不是10,取模之后还是它本身),进行一个判断,如果加一之后不是0,
        //返回当前的数组,有一个特殊的情况就是每一位加一以后都是0,
        //则说明数组中的每一位数都是9,那么此时我们返回一个长度加一的数组,且首位为1
        int n = digits.length;
        for(int i = n-1; i > 0; i--){
            digits[i] ++;
            digits[i] = digits[i] % 10;
            if(digits[i] != 0){
                return digits;
            }
        }
        //创建一个新的数组
        digits = new int[n+1];
        digits[0] = 1;
        return digits;
    }
}

 

标签:digits,取模,加一,10,int,数组,leetode
From: https://blog.csdn.net/2301_76876837/article/details/137408350

相关文章

  • C++ //练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair
    C++Primer(第5版)练习11.14练习11.14扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。环境:LinuxUbuntu(云服务器)工具:vim 代码块/************************************************************************* >Fil......
  • 【Java业务需求解决方案】分布式锁应用详情,多种方案选择,轻松解决,手把手操作(非全数
    目录背景:解决方案:分布式锁方案一(不建议,但原理得懂):Redis锁setnx与业务代码处理雏形代码产生问题一:锁释放问题代码改造:锁添加过期时间产生问题二:锁被别的线程误删代码改造:添加setnx锁请求标识防勿删产生问题三:递归容易造成内存溢出代码改造:递归改造while循环产生......
  • BigDecimal相加一直为零的坑,解决BigDecimal相加为0的方法
    BigDecimal相加一直为零的坑,解决BigDecimal相加为0的方法使用BigDecimal时,相加一直为零,感觉有点坑。错误写法:BigDecimalafe=newBigDecimal("0");for(inti=0;i<10;i++){BigDecimaldecimal=newBigDecimal("1000");......
  • Vue 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?
    <template><div><ul><liv-for="valueinobj":key="value">{{value}}</li></ul><button@click="addObjB">添加obj.b</button></div>&......
  • 尝试 `npm install @xxxxx` ,或者添加一个包含 `declare module ‘xxxxx‘;` 的新声明(.
    我们在vue3+ts的项目中,有时候安装插件,在导入文件使用的时候会出现上面的问题,这是因为插件库中并没有ts的.d.ts类型的声明文件,所以我们在导入使用的时候一直报警告,无法使用。要解决这个问题,根据他的提示有两种解决方案。方案一:根据提醒安装对应的ts类型插件即可。方案二:......
  • 66. 加一c
    /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/voidreverse(int*s,intn){inthead=0,tail=n-1;while(head<=tail){intc=s[head];s[head]=s[tail];s[tail]=c;head++;tai......
  • 66. 加一c
    /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/voidreverse(int*a,intn){inthead=0,tail=n-1;while(head<=tail){intt=a[head];a[head]=a[tail];a[tail]=t;head++;tai......
  • 拆解跨天时间(mysql游标循环)-在转来的基础上增加一些更改
    尊重作者,原文链接:https://blog.csdn.net/liminghui4321/article/details/102763052原始数据表:需要将上面的时间段转成每一天的记录: 在原文的基础上作了一些更改:1、在表sales上增加一个字段bj:altertablesalesaddcolumnbjintDEFAULT0null;2、存储过程基础上增加了......
  • abc304E 加一条边后是否仍为好图
    给一张n个点m条边的无向图,另外给出k组约束条件(x[i],y[i]),要求点x[i]不能与y[i]连通,满足全部k组条件的图称为好图。原图为好图,现在给出q组独立的询问,每组询问给定(u,v),问如果在u和v之间加一条边,是否为好图?思路:先把图读进来,得到一些连通块,然后将约束条件用set存起来,在处理询问时,检......
  • 【转】在 github 添加一个 SSH key
    参考:https://zhuanlan.zhihu.com/p/345846941、登录到 https://github.com,在设置页面的左侧菜单里找到SSHandGPGkeys2、打开GitBash3、运行 ssh-keygen-trsa-b4096-C"你的邮箱",注意要填写与github.com里相同的邮箱,不需要接收验证码啥的4、按回车三次,就成......