zoukankan      html  css  js  c++  java
  • [leetCode]66. 加一

    在这里插入图片描述

    解法

    数组每一位只能包含一位数字,只有当数字大于9时才会产生进位,所以只需要从后往前遍历,每次加上进位,当下一位需要进位时j置一,否则置0。循环结束时如果首位为0则需要扩容数组并将首位置1。

    class Solution {
        public int[] plusOne(int[] digits) {
            int len = digits.length;
            int j = 1;//进位
            for(int i = len - 1; i >= 0; --i){
                digits[i]+=j;
                if(digits[i]>9){//判断下一位是否需要进位
                    digits[i] = digits[i] % 10;
                    j = 1;
                }else{
                    j = 0;
                } 
            }
            if(digits[0] == 0){//最高位为0则需要扩容数组
                digits = new int[len + 1];
                digits[0] = 1; 
            }
            return digits;
        }
    }
    

    下面这种方法思路差不多,但是写法更优雅,使用当前位取余后是否为0来判断下一位是否需要进位。

    class Solution {
        public int[] plusOne(int[] digits) {
            int len = digits.length;
            for(int i = len - 1; i >= 0; --i){
                digits[i]++;
                digits[i]%=10;//digits[i]< 10则保持不变,>10 取余数
                if(digits[i] !=0 )return digits;//判断下一位是否需要+1,digits[i]!=0说明没有产生进位
            }
            digits = new int[len + 1];
            digits[0] = 1;
            return digits;
        }
    }
    
  • 相关阅读:
    如何安装配置ulipad
    python链接mysql的代码
    python 模块
    python 查找关键词在百度的排名
    python 类和对象
    python beautifulsoup多线程分析抓取网页
    python 函数关键参数
    python 批量下载文件
    python 语言有哪些特点
    python 类和对象的特点
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860021.html
Copyright © 2011-2022 走看看