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;
        }
    }
    
  • 相关阅读:
    css列表
    css字体
    css文本
    css背景
    css里的属性
    MySQL语法大全_自己整理的学习笔记
    必看的 jQuery性能优化的38个建议
    p​h​p​异​常​机​制
    常用软件
    php过滤危险html代码
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860021.html
Copyright © 2011-2022 走看看