zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)加一 个人题解

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

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

    你可以假设除了整数 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,加一变成0后,需要改变数组的长度在最前面补1 才是正确答案。

    代码如下:

    class Solution {
        public int[] plusOne(int[] digits) {
            int[] ans;
            for (int i = digits.length - 1; i >= 0; i--) {
                if (digits[i] == 9) {
                    digits[i] = 0;
                } else {
                    digits[i] += 1;
                    return digits;
                }
    
            }
            if (digits[0] == 0) {
                ans = new int[digits.length + 1];
                ans[0] = 1;
                int t = 0;
                for (int i : digits) {
                    ans[++t] = i;
                }
            }
            return digits;
        }
    }
  • 相关阅读:
    RocketMQ消息模型
    RabbitMQ消息模型
    消息队列选择
    消息队列使用场景
    synchronized底层实现
    Java 内存模型
    MySql中的字符数据类型
    php页面编码与字符操作
    git学习总结
    SESSION机制
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10404049.html
Copyright © 2011-2022 走看看