leecode刷題(7)-- 加一
阿新 • • 發佈:2018-12-31
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)); } }