From a962fb25d6e43c09da986cb39fab5bc22dbefee8 Mon Sep 17 00:00:00 2001 From: G100my Date: Sun, 8 Dec 2019 07:48:08 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AE=8C=E6=88=90=20Issue13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index e1f8aa2..38a0233 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -4,17 +4,26 @@ public class Issue13 { public static void main(String[] args) { - int[] data = {5, 5, 6, 6, 78, 78, 78, 9487, 9487, 9487, 9487, 65535}; + int[] data = { 5, 5, 6, 6, 78, 78, 78, 9487, 9487, 9487, 9487, 65535 }; int[] result = longest(data); System.out.println(Arrays.toString(result)); } - /** - * @param data 已經排序過的 array - * @return result[0] 是最長平台的數字,result[1] 是長度 - */ private static int[] longest(int[] data) { - //FIXME - return new int[]{9487, 4}; + int counter = 1; + int max_counter = 0; + int number = data[0]; + for (int i = 0, ii = 1; ii < data.length; i++, ii++) { + if (data[i] == data[ii]) { + counter += 1; + if (counter > max_counter) { + max_counter = counter; + number = data[i]; + } + } else { + counter = 1; + } + } + return new int[] { number, max_counter }; } -} +} \ No newline at end of file From 4f9695ef2f4b693fc473781c52f1fa4e5613e369 Mon Sep 17 00:00:00 2001 From: G100my Date: Mon, 9 Dec 2019 02:42:58 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=A8=82=E6=AD=A3=E5=A4=9A=E9=A4=98?= =?UTF-8?q?=E7=9A=84=20ii=E3=80=81=E6=96=B0=E5=A2=9E=20v2=E3=80=81v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 59 ++++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index 38a0233..24d7f2f 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -6,15 +6,25 @@ public class Issue13 { public static void main(String[] args) { int[] data = { 5, 5, 6, 6, 78, 78, 78, 9487, 9487, 9487, 9487, 65535 }; int[] result = longest(data); + int[] result_v2 = longest_v2(data); + int[] result_v3 = longest_v3(data); System.out.println(Arrays.toString(result)); + System.out.println(Arrays.toString(result_v2)); + System.out.println(Arrays.toString(result_v3)); + } + /** + * @param data 已經排序過的 array + * @return result[0] 是最長平台的數字,result[1] 是長度 + */ + private static int[] longest(int[] data) { int counter = 1; int max_counter = 0; int number = data[0]; - for (int i = 0, ii = 1; ii < data.length; i++, ii++) { - if (data[i] == data[ii]) { + for (int i = 0; i < data.length - 1; i++) { + if (data[i] == data[i + 1]) { counter += 1; if (counter > max_counter) { max_counter = counter; @@ -26,4 +36,49 @@ private static int[] longest(int[] data) { } return new int[] { number, max_counter }; } + + private static int[] longest_v2(int[] data) { + int i = 0; + int ii = 1; + int number = 0; + int max_counter = 0; + while (ii < data.length) { + if (data[i] != data[ii]) { + if (ii - i > max_counter) { + max_counter = ii - i; + number = data[i]; + } + i = ii; + } + ii += 1; + } + if (ii - i > max_counter) { + max_counter = ii - i; + number = data[i]; + } + + return new int[] { number, max_counter }; + } + + private static int[] longest_v3(int[] data) { + int number = 0; + int i = 0; + int ii = 0; + int counter = 1; + int max_counter = 0; + do { + if (data[i] == data[ii]) { + counter += 1; + } else { + counter = 1; + i = ii; + } + if (counter > max_counter) { + max_counter = counter; + number = data[i]; + } + ii += 1; + } while (ii < data.length); + return new int[] { number, max_counter }; + } } \ No newline at end of file From 1a17248f3b9ebc93c71b36a8f5898af8de99fa43 Mon Sep 17 00:00:00 2001 From: G100my Date: Mon, 9 Dec 2019 16:54:33 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=88=AA=E9=99=A4=20v2=E3=80=81v3=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 51 ++++++----------------- 1 file changed, 12 insertions(+), 39 deletions(-) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index 24d7f2f..5279b50 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -6,11 +6,9 @@ public class Issue13 { public static void main(String[] args) { int[] data = { 5, 5, 6, 6, 78, 78, 78, 9487, 9487, 9487, 9487, 65535 }; int[] result = longest(data); - int[] result_v2 = longest_v2(data); - int[] result_v3 = longest_v3(data); + int[] result_v4 = longest_v4(data); System.out.println(Arrays.toString(result)); - System.out.println(Arrays.toString(result_v2)); - System.out.println(Arrays.toString(result_v3)); + System.out.println(Arrays.toString(result_v4)); } @@ -37,48 +35,23 @@ private static int[] longest(int[] data) { return new int[] { number, max_counter }; } - private static int[] longest_v2(int[] data) { + private static int[] longest_v4(int[] data) { int i = 0; - int ii = 1; int number = 0; int max_counter = 0; - while (ii < data.length) { - if (data[i] != data[ii]) { - if (ii - i > max_counter) { - max_counter = ii - i; - number = data[i]; + for (int ii = 1; ii < data.length; ii++) { + if (ii - i + 1 > max_counter) { + max_counter = ii - i; + number = data[i]; + if (data[i] == data[data.length - 1]) { + max_counter += 1; + number = data[ii]; } - i = ii; } - ii += 1; - } - if (ii - i > max_counter) { - max_counter = ii - i; - number = data[i]; - } - - return new int[] { number, max_counter }; - } - - private static int[] longest_v3(int[] data) { - int number = 0; - int i = 0; - int ii = 0; - int counter = 1; - int max_counter = 0; - do { - if (data[i] == data[ii]) { - counter += 1; - } else { - counter = 1; + if (data[i] != data[ii]) { i = ii; } - if (counter > max_counter) { - max_counter = counter; - number = data[i]; - } - ii += 1; - } while (ii < data.length); + } return new int[] { number, max_counter }; } } \ No newline at end of file From d7235551cb0b749f7f354c67cd881c31cafc3afb Mon Sep 17 00:00:00 2001 From: G100my Date: Thu, 12 Dec 2019 12:59:58 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20v5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index 5279b50..e68d291 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -7,9 +7,10 @@ public static void main(String[] args) { int[] data = { 5, 5, 6, 6, 78, 78, 78, 9487, 9487, 9487, 9487, 65535 }; int[] result = longest(data); int[] result_v4 = longest_v4(data); + int[] result_v5 = longest_v5(data); System.out.println(Arrays.toString(result)); System.out.println(Arrays.toString(result_v4)); - + System.out.println(Arrays.toString(result_v5)); } /** @@ -54,4 +55,21 @@ private static int[] longest_v4(int[] data) { } return new int[] { number, max_counter }; } + + private static int[] longest_v5(int[] data) { + int number = 0; + int counter = 1; + int max_counter = 1; + for (int i = 1; i < data.length; i++) { + if (data[i] != data[i - 1]) { + counter = 1; + } + if (counter > max_counter) { + max_counter = counter; + number = data[i]; + } + counter += 1; + } + return new int[] { number, max_counter }; + } } \ No newline at end of file From f9ba5d5d234d9cb2fd7fe1f812f4b3febfde6d36 Mon Sep 17 00:00:00 2001 From: G100my Date: Tue, 17 Dec 2019 02:12:05 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20bug=20=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20v6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 26 +++++++++++++++++++--- basic/src/main/java/lo/basic/Issue16.java | 27 +++++++++++++++++++++++ 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 basic/src/main/java/lo/basic/Issue16.java diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index e68d291..25eecfb 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -8,9 +8,11 @@ public static void main(String[] args) { int[] result = longest(data); int[] result_v4 = longest_v4(data); int[] result_v5 = longest_v5(data); + int[] result_v6 = longest_v6(data); System.out.println(Arrays.toString(result)); System.out.println(Arrays.toString(result_v4)); System.out.println(Arrays.toString(result_v5)); + System.out.println(Arrays.toString(result_v6)); } /** @@ -20,7 +22,7 @@ public static void main(String[] args) { private static int[] longest(int[] data) { int counter = 1; - int max_counter = 0; + int max_counter = 1; int number = data[0]; for (int i = 0; i < data.length - 1; i++) { if (data[i] == data[i + 1]) { @@ -57,10 +59,11 @@ private static int[] longest_v4(int[] data) { } private static int[] longest_v5(int[] data) { - int number = 0; + int number = data[0]; int counter = 1; int max_counter = 1; for (int i = 1; i < data.length; i++) { + counter += 1; if (data[i] != data[i - 1]) { counter = 1; } @@ -68,8 +71,25 @@ private static int[] longest_v5(int[] data) { max_counter = counter; number = data[i]; } - counter += 1; } return new int[] { number, max_counter }; } + + private static int[] longest_v6(int[] data) { + int counter = 0; + int number = data[0]; + int max_counter = 0; + int max_number = data[0]; + for (int i = 0; i < data.length; i++) { + counter += 1; + if (data[i] == number && counter > max_counter) { + max_counter = counter; + max_number = number; + } else if (data[i] != number) { + number = data[i]; + counter = 1; + } + } + return new int[] { max_number, max_counter }; + } } \ No newline at end of file diff --git a/basic/src/main/java/lo/basic/Issue16.java b/basic/src/main/java/lo/basic/Issue16.java new file mode 100644 index 0000000..167660e --- /dev/null +++ b/basic/src/main/java/lo/basic/Issue16.java @@ -0,0 +1,27 @@ +package lo.basic; + +public class Issue16 { + + static int[] stack = new int [10]; + + public static void main(String[] args) { + push(9); + push(4); + push(8); + push(7); + System.out.println(pop()); // 7 + System.out.println(pop()); // 8 + System.out.println(pop()); // 4 + push(7); + push(8); + System.out.println(pop()); // 8 + } + + private static void push(int value) { + + } + + private static int pop() { + return Integer.MIN_VALUE; //fix + } +} From 8e91fccfaa3f886170442768e50d7212e0e31464 Mon Sep 17 00:00:00 2001 From: G100my Date: Tue, 17 Dec 2019 20:20:00 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20bug=20test=E3=80=81?= =?UTF-8?q?=E5=88=AA=E9=99=A4=E8=AA=A4=E5=82=B3=E6=AA=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 34 +++++++++++++++++++++++ basic/src/main/java/lo/basic/Issue16.java | 27 ------------------ 2 files changed, 34 insertions(+), 27 deletions(-) delete mode 100644 basic/src/main/java/lo/basic/Issue16.java diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index 25eecfb..cc1a82c 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -13,6 +13,17 @@ public static void main(String[] args) { System.out.println(Arrays.toString(result_v4)); System.out.println(Arrays.toString(result_v5)); System.out.println(Arrays.toString(result_v6)); + + int[] bugTest_1 = { 1, 1, 1, 1, 1, 6, 6, 8, 8, }; + int[] bugTest_2 = { 3, 5, 6, 7, 8, 99, 300 }; + int[] answer_test_1 = { 1, 5 }; + int[] answer_test_2 = { 3, 1 }; + System.out.println("第一個數字數量最多的情況: "); + System.out.println("修正前為 :" + test(longest_v5_beforeFix(bugTest_1), answer_test_1)); + System.out.println("修正後為 :" + test(longest_v5(bugTest_1), answer_test_1)); + System.out.println("數字數量都是 1 的情況: "); + System.out.println("修正前為 :" + test(longest_v5_beforeFix(bugTest_2), answer_test_2)); + System.out.println("修正後為 :" + test(longest_v5(bugTest_2), answer_test_2)); } /** @@ -92,4 +103,27 @@ private static int[] longest_v6(int[] data) { } return new int[] { max_number, max_counter }; } + + private static int[] longest_v5_beforeFix(int[] data) { + int number = 0; + int counter = 1; + int max_counter = 1; + for (int i = 1; i < data.length; i++) { + if (data[i] != data[i - 1]) { + counter = 1; + } + if (counter > max_counter) { + max_counter = counter; + number = data[i]; + } + counter += 1; + } + return new int[] { number, max_counter }; + } + + private static boolean test(int[] value, int[] answer) { + System.out.println("value = " + Arrays.toString(value)); + System.out.println("answer = " + Arrays.toString(answer)); + return value[0] == answer[0] && value[1] == answer[1]; + } } \ No newline at end of file diff --git a/basic/src/main/java/lo/basic/Issue16.java b/basic/src/main/java/lo/basic/Issue16.java deleted file mode 100644 index 167660e..0000000 --- a/basic/src/main/java/lo/basic/Issue16.java +++ /dev/null @@ -1,27 +0,0 @@ -package lo.basic; - -public class Issue16 { - - static int[] stack = new int [10]; - - public static void main(String[] args) { - push(9); - push(4); - push(8); - push(7); - System.out.println(pop()); // 7 - System.out.println(pop()); // 8 - System.out.println(pop()); // 4 - push(7); - push(8); - System.out.println(pop()); // 8 - } - - private static void push(int value) { - - } - - private static int pop() { - return Integer.MIN_VALUE; //fix - } -} From f258e88761bafd316b0c4c3e1b35b74aa3443d97 Mon Sep 17 00:00:00 2001 From: G100my Date: Fri, 24 Jan 2020 06:20:49 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20v5=20=E5=85=88?= =?UTF-8?q?=E5=89=8D=E7=89=88=E6=9C=AC=E7=AD=89=E9=9B=9C=E8=A8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index cc1a82c..a7ab199 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -13,16 +13,10 @@ public static void main(String[] args) { System.out.println(Arrays.toString(result_v4)); System.out.println(Arrays.toString(result_v5)); System.out.println(Arrays.toString(result_v6)); - - int[] bugTest_1 = { 1, 1, 1, 1, 1, 6, 6, 8, 8, }; int[] bugTest_2 = { 3, 5, 6, 7, 8, 99, 300 }; - int[] answer_test_1 = { 1, 5 }; int[] answer_test_2 = { 3, 1 }; System.out.println("第一個數字數量最多的情況: "); - System.out.println("修正前為 :" + test(longest_v5_beforeFix(bugTest_1), answer_test_1)); - System.out.println("修正後為 :" + test(longest_v5(bugTest_1), answer_test_1)); System.out.println("數字數量都是 1 的情況: "); - System.out.println("修正前為 :" + test(longest_v5_beforeFix(bugTest_2), answer_test_2)); System.out.println("修正後為 :" + test(longest_v5(bugTest_2), answer_test_2)); } @@ -104,23 +98,6 @@ private static int[] longest_v6(int[] data) { return new int[] { max_number, max_counter }; } - private static int[] longest_v5_beforeFix(int[] data) { - int number = 0; - int counter = 1; - int max_counter = 1; - for (int i = 1; i < data.length; i++) { - if (data[i] != data[i - 1]) { - counter = 1; - } - if (counter > max_counter) { - max_counter = counter; - number = data[i]; - } - counter += 1; - } - return new int[] { number, max_counter }; - } - private static boolean test(int[] value, int[] answer) { System.out.println("value = " + Arrays.toString(value)); System.out.println("answer = " + Arrays.toString(answer)); From 0d1f54c284aadee45448ca2c640f7f932ae65a30 Mon Sep 17 00:00:00 2001 From: G100my Date: Fri, 24 Jan 2020 06:30:39 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20v7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/src/main/java/lo/basic/Issue13.java | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/basic/src/main/java/lo/basic/Issue13.java b/basic/src/main/java/lo/basic/Issue13.java index a7ab199..491e40b 100644 --- a/basic/src/main/java/lo/basic/Issue13.java +++ b/basic/src/main/java/lo/basic/Issue13.java @@ -9,10 +9,12 @@ public static void main(String[] args) { int[] result_v4 = longest_v4(data); int[] result_v5 = longest_v5(data); int[] result_v6 = longest_v6(data); + int[] result_v7 = longest_v7(data); System.out.println(Arrays.toString(result)); System.out.println(Arrays.toString(result_v4)); System.out.println(Arrays.toString(result_v5)); System.out.println(Arrays.toString(result_v6)); + System.out.println(Arrays.toString(result_v7)); int[] bugTest_2 = { 3, 5, 6, 7, 8, 99, 300 }; int[] answer_test_2 = { 3, 1 }; System.out.println("第一個數字數量最多的情況: "); @@ -98,6 +100,28 @@ private static int[] longest_v6(int[] data) { return new int[] { max_number, max_counter }; } + private static int[] longest_v7(int[] data) { + int max = 0; + int num = data[0]; + int counter = 1; + for (int i = 1; i < data.length; i++) { + if (data[i] == data[i - 1]) { + counter += 1; + continue; + } + if (counter > max) { + max = counter; + num = data[i - 1]; + } + counter = 1; + } + if (counter > max) { + max = counter; + num = data[data.length - 1]; + } + return new int[] { num, max }; + } + private static boolean test(int[] value, int[] answer) { System.out.println("value = " + Arrays.toString(value)); System.out.println("answer = " + Arrays.toString(answer));