LeetCode-066-加一
阿新 • • 發佈:2021-07-05
加一
題目描述:給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/plus-one/
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:遍歷陣列
初始化一個進位的值addOne為1,從陣列digits的最後一位往前開始遍歷:
- 把當前位置的值和addOne相加;
- 如果相加結果為10,則產生進位,addOne
設定為1,並且當前為值的值設定為0;- 如果相加結果小於10,則不會產生進位,addOne設定為0,並且當前為值的值設定為相加結果;
- 直到遍歷結束。
遍歷結束後,如果addOne為0,則直接返回digits;如果addOne為1,則把1放在digits的第一位,然後返回。
import java.util.Arrays; public class LeetCode_066 { public static int[] plusOne(int[] digits) { int addOne = 1; for (int i = digits.length - 1; i >= 0; i--) { if (addOne + digits[i] == 10) { addOne = 1; digits[i] = 0; } else { digits[i] = addOne + digits[i]; addOne = 0; } } if (addOne == 1) { int[] result = new int[digits.length + 1]; result[0] = addOne; for (int i = 0; i < digits.length; i++) { result[i + 1] = digits[i]; } return result; } else { return digits; } } public static void main(String[] args) { int[] digits = new int[]{4, 3, 2, 1}; Arrays.stream(plusOne(digits)).forEach(digit -> { System.out.print(digit + " "); }); } }
【每日寄語】 清晨,帶著一顆雀躍的心醒來,感謝又一個充滿愛的日子。