LeetCode - Easy - 66. Plus One
Topic
Array
Description
https://leetcode.com/problems/plus-one/
Given a non-empty array of decimal digits representing a non-negative integer, increment one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contains a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Example 3:
Input: digits = [0]
Output: [1]
Constraints:
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
Analysis
按照加法思路,注意陣列元素全是9的情況。
Submission
public class PlusOne {
//我寫的
public int[] plusOne1(int[] digits) {
boolean carry = true;
for (int i = digits.length - 1; carry && i >= 0; i--) {
digits[i] = (carry = ++digits[i] == 10) ? 0 : digits[i];
}
if (carry) {
digits = new int[digits.length + 1];
digits[0] = 1;
}
return digits;
}
//別人寫的
public int[] plusOne2(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] newNumber = new int[n + 1];
newNumber[0] = 1;
return newNumber;
}
}
Test
import static org.junit.Assert.*;
import org.junit.Test;
public class PlusOneTest {
@Test
public void test() {
PlusOne obj = new PlusOne();
assertArrayEquals(new int[] {1, 2, 4}, obj.plusOne1(new int[] {1, 2, 3}));
assertArrayEquals(new int[] {4, 3, 2, 2}, obj.plusOne1(new int[] {4, 3, 2, 1}));
assertArrayEquals(new int[] {1}, obj.plusOne1(new int[] {0}));
assertArrayEquals(new int[] {1, 0, 0, 0}, obj.plusOne1(new int[] {9, 9, 9}));
assertArrayEquals(new int[] {6, 7, 9, 0}, obj.plusOne1(new int[] {6, 7, 8, 9}));
assertArrayEquals(new int[] {1, 2, 4}, obj.plusOne2(new int[] {1, 2, 3}));
assertArrayEquals(new int[] {4, 3, 2, 2}, obj.plusOne2(new int[] {4, 3, 2, 1}));
assertArrayEquals(new int[] {1}, obj.plusOne2(new int[] {0}));
assertArrayEquals(new int[] {1, 0, 0, 0}, obj.plusOne2(new int[] {9, 9, 9}));
assertArrayEquals(new int[] {6, 7, 9, 0}, obj.plusOne2(new int[] {6, 7, 8, 9}));
}
}
相關文章
- [leetcode]plus-oneLeetCode
- [LeetCode] 66. 加一LeetCode
- plus_one
- Leetcode(easy heap)LeetCode
- LeetCode-EasyLeetCode
- LeetCode 198. 打家劫舍(Easy)LeetCode
- Leetcode - Tree - Easy(100-110)LeetCode
- LeetCode Patching Array All In OneLeetCode
- Leetcode-Easy 70. Climbing StairsLeetCodeAI
- LeetCode - Easy - 206. Reverse Linked ListLeetCode
- LeetCode 252. Meeting Rooms (Java版; Easy)LeetCodeOOMJava
- LeetCode Greatest Common Divisor of Strings All In OneLeetCode
- LeetCode 394. Decode String All In OneLeetCode
- LeetCode 735. Asteroid Collision All In OneLeetCodeAST
- C# 寫 LeetCode easy #14 Longest Common PrefixC#LeetCode
- LeetCode 974 Subarray Sums Divisible by K All In OneLeetCode
- [LeetCode-SQL-Easy]176. 第二高薪水LeetCodeSQL高薪
- 66.《ds---查詢》
- 【Leetcode】1180. Count Substrings with Only One Distinct LetterLeetCode
- 【LeetCode】290. Word Pattern 單詞規律(Easy)(JAVA)每日一題LeetCodeJava每日一題
- tomcat one connection one thread one request one threadTomcatthread
- ●Joyoi Easy
- As Easy As A+B
- Easy-Admin
- 【BUUCTF】Easy JavaJava
- 【BUUCTF】easy calc
- 字串魔法(easy)字串
- 力扣 - 劍指 Offer 66. 構建乘積陣列力扣陣列
- vue-easy-rendererVue
- type challenge(easy 部分)
- Prefix Flip (Easy Version)
- [RoarCTF 2019]Easy Calc
- Fractal pg walkthrough Easy
- Hub PG walkthrough Easy
- Catch the Mole(Easy Version)
- j-easy/easy-rules: Java簡單的規則引擎Java
- LeetCode 83.Remove Duplicates from Sorted List(從已排序連結串列中除去重複) Easy/Linked ListLeetCodeREM排序
- one drive