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 Plus OneLeetCode
- [leetcode]plus-oneLeetCode
- Leetcode-Plus OneLeetCode
- Plus One leetcode javaLeetCodeJava
- LeetCode 第 66 題 (Plus One)LeetCode
- [LeetCode] 66. 加一LeetCode
- LeetCode-EasyLeetCode
- Leetcode(easy heap)LeetCode
- 【leetcode】length of last word (easy)LeetCodeAST
- LeetCode 198. 打家劫舍(Easy)LeetCode
- 66.《ds---查詢》
- Leetcode 252. Meeting Rooms (Easy) (cpp)LeetCodeOOM
- Leetcode-One Edit DistanceLeetCode
- LeetCode-Number of Digit OneLeetCodeGit
- LeetCode Patching Array All In OneLeetCode
- LeetCode 252. Meeting Rooms (Java版; Easy)LeetCodeOOMJava
- Leetcode - Tree - Easy(100-110)LeetCode
- Leetcode-Easy 70. Climbing StairsLeetCodeAI
- 【LeetCode】476.Number Complement_EASY(二)LeetCode
- C# 寫 LeetCode easy #14 Longest Common PrefixC#LeetCode
- LeetCode - Easy - 206. Reverse Linked ListLeetCode
- [LeetCode-SQL-Easy]176. 第二高薪水LeetCodeSQL高薪
- 【LeetCode】461.Hamming Distance_EASY(一)LeetCode
- Leetcode Variant-Plus NLeetCode
- 找到好工作之 LeetcodeTop100(Easy) by JavaScriptLeetCodeJavaScript
- LeetCode 394. Decode String All In OneLeetCode
- LeetCode 735. Asteroid Collision All In OneLeetCodeAST
- [LeetCode-Easy]344. Reverse String-逆置字串LeetCode字串
- LeetCode 974 Subarray Sums Divisible by K All In OneLeetCode
- LeetCode Greatest Common Divisor of Strings All In OneLeetCode
- 蔡司VR頭盔VR One Plus開賣:相容iPhone 6sVRiPhone
- HTC One M9 Plus配置曝光:驍龍810處理器
- 【LeetCode】290. Word Pattern 單詞規律(Easy)(JAVA)每日一題LeetCodeJava每日一題
- tomcat one connection one thread one request one threadTomcatthread
- 力扣 - 劍指 Offer 66. 構建乘積陣列力扣陣列
- 【Leetcode】1180. Count Substrings with Only One Distinct LetterLeetCode
- LeetCode All in One 題目講解彙總(持續更新中...)LeetCode