diff --git a/src/main/java/com/fishercoder/solutions/_66.java b/src/main/java/com/fishercoder/solutions/_66.java index 48a3f43884..9c6d586ed5 100644 --- a/src/main/java/com/fishercoder/solutions/_66.java +++ b/src/main/java/com/fishercoder/solutions/_66.java @@ -20,4 +20,21 @@ public int[] plusOne(int[] digits) { return newNumber; } } + + public static class Solution2 { + public int[] plusOne(int[] digits) { + int len = digits.length; + for (int i = len - 1; i >= 0; i--) { + if (digits[i] == 9) { + digits[i] = 0; + } else { + digits[i]++; + return digits; + } + } + int[] newNumber = new int[len + 1]; + newNumber[0] = 1; + return newNumber; + } + } } diff --git a/src/test/java/com/fishercoder/_66Test.java b/src/test/java/com/fishercoder/_66Test.java index d8e45a2d57..4c605f7056 100644 --- a/src/test/java/com/fishercoder/_66Test.java +++ b/src/test/java/com/fishercoder/_66Test.java @@ -1,18 +1,21 @@ package com.fishercoder; -import com.fishercoder.solutions._66; +import static org.junit.Assert.assertArrayEquals; + import org.junit.BeforeClass; import org.junit.Test; -import static org.junit.Assert.assertArrayEquals; +import com.fishercoder.solutions._66; public class _66Test { private static _66.Solution1 solution1; + private static _66.Solution2 solution2; private static int[] digits; @BeforeClass public static void setup() { solution1 = new _66.Solution1(); + solution2 = new _66.Solution2(); } @Test @@ -32,4 +35,23 @@ public void test3() { digits = new int[]{2, 4, 9, 3, 9}; assertArrayEquals(new int[]{2, 4, 9, 4, 0}, solution1.plusOne(digits)); } + + @Test + public void test4() { + digits = new int[]{9, 9, 9, 9, 9}; + assertArrayEquals(new int[]{1, 0, 0, 0, 0, 0}, solution2.plusOne(digits)); + } + + @Test + public void test5() { + digits = new int[]{8, 9, 9, 9, 9}; + assertArrayEquals(new int[]{9, 0, 0, 0, 0}, solution2.plusOne(digits)); + } + + @Test + public void test6() { + digits = new int[]{2, 4, 9, 4, 9}; + assertArrayEquals(new int[]{2, 4, 9, 5, 0}, solution2.plusOne(digits)); + } + }