力扣 66.加一 (Java实现)

题目分析

给定一个数组,可以组成一个数字,将数字加一后,返回新数组

思路分析

首先跟着题目思路走,将数组按位*10可以得到数字,再加一,加一后按位%10,可以得到新的数组。但是此处数字会过大,导致数字溢出,切换为long型后,数字过大也会让乘除的操作精度丢失。

换个思路,跳过数组与数字转换。这个题目的重点就在于最后一位,如果最后一位小于9,则最后一位+1,然后直接输出数组。如果是9,则考虑进位,如果全是9,则进位后首位为1,其余为0;

代码

java 复制代码
class Solution {
    public int[] plusOne(int[] digits) {
        int n=digits.length-1;//题目给定数组的末位
        for(int i=n;i>=0;i--){//从末尾到首位遍历
            if(digits[i]<9){//如果这一位不为9
                digits[i]++;该位+1
                return digits;//直接输出
            }
            digits[i]=0;//如果为9,就先把这一位变成0,同时继续循环,直到遇到不为9的值
        }
        int[] re=new int[n+2];//此处为全是9的情况,需要新数组多一位
        re[0]=1;//首位1,其余0
        return re;//输出新数组
    }
}

今天走人户,所以在网吧做进不去cf,今天就做一道力扣吧

感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。

相关推荐
To_OC9 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎10 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC10 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn11 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹11 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术12 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
CV-Climber15 小时前
检索技术的实际应用
人工智能·算法
hhzz15 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_16 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法