• leecode刷题(7)-- 加一


    leecode刷题(7)-- 加一

    加一

    描述:

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

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

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

    示例1:

    输入: [1,2,3]
    输出: [1,2,4]
    解释: 输入数组表示数字 123。

    示例2:

    输入:[0, 9]

    输出:[1, 0]

    解释:输入数组表示数字 9。

    思路:

    我们从后往前遍历数组,当遍历到最后一位的时候我们让数组的最后一位加 1,如果数组的最后一位是 9 的话,则需要进位,该位赋值为 0 。如果前面位的数组也是 9 的话,则需要继续向前进位,继续将 9 数字位赋值为 0 ,直至不再是 9 (当从后往前遍历到不再是 9 后我们又能执行加 1 操作啦)。这里有一个细节,如果数组的第一位是 9 的话,加 1 后会产生新的一位,所以我们将该位赋值为 0 后还需要将数组长度加 1 ,然后将 数组[0] = 1。

    代码如下:

    import java.util.Arrays;
    
    public class PlusOne {
    	public int[] plusOne(int[] digits) {
    		int n = digits.length;
    		for (int i = digits.length - 1; i >= 0; --i) {
    			if (digits[i] < 9) {
    				++digits[i];
    				return digits;
    			}
    			digits[i] = 0;
    		}
    		int[] res = new int[n + 1];
    		res[0] = 1;
    		return res;
    	}
    
    	public static void main(String[] args) {
    		int[] a = {1,2,9};
    		PlusOne plusOne = new PlusOne();
    		int[] b = plusOne.plusOne(a);
    		System.out.println(Arrays.toString(b));
    	}
    }
    
  • 相关阅读:
    Luogu P1396 营救
    Luogu P1339 热浪Heat Wave
    哈夫曼树学习笔记
    题解 CF1372C
    题解 CF 1372 B
    题解 CF 1372A
    题解 UVA1193 Radar Installation
    题解 洛谷 P2287 [USACO07NOV]Sunscreen G
    洛谷 P1080 国王游戏 题解
    牛客练习赛 66C公因子 题解
  • 原文地址:https://www.cnblogs.com/weixuqin/p/10203452.html
Copyright © 2020-2023  润新知