From a3ff6aa7c0889f537af7f516f9a3838e411a2610 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 10:00:19 +0200 Subject: [PATCH 01/13] tasks 160- 172, without 161,163,170 --- .../Solution.java | 18 +++++++ .../s0162_find_peak_element/Solution.java | 21 ++++++++ .../s0164_maximum_gap/Solution.java | 22 +++++++++ .../Solution.java | 44 +++++++++++++++++ .../Solution.java | 48 +++++++++++++++++++ .../Solution.java | 26 ++++++++++ .../Solution.java | 12 +++++ .../s0169_majority_element/Solution.java | 34 +++++++++++++ .../Solution.java | 12 +++++ .../Solution.java | 13 +++++ .../SolutionTest.java | 30 ++++++++++++ .../s0162_find_peak_element/SolutionTest.java | 12 +++++ .../s0164_maximum_gap/SolutionTest.java | 14 ++++++ .../SolutionTest.java | 15 ++++++ .../SolutionTest.java | 12 +++++ .../SolutionTest.java | 12 +++++ .../SolutionTest.java | 12 +++++ .../s0169_majority_element/SolutionTest.java | 12 +++++ .../SolutionTest.java | 12 +++++ .../SolutionTest.java | 12 +++++ 20 files changed, 393 insertions(+) create mode 100644 src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java create mode 100644 src/main/java/g0101_0200/s0162_find_peak_element/Solution.java create mode 100644 src/main/java/g0101_0200/s0164_maximum_gap/Solution.java create mode 100644 src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java create mode 100644 src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java create mode 100644 src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java create mode 100644 src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java create mode 100644 src/main/java/g0101_0200/s0169_majority_element/Solution.java create mode 100644 src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java create mode 100644 src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java create mode 100644 src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java create mode 100644 src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java new file mode 100644 index 000000000..4abdcfb17 --- /dev/null +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -0,0 +1,18 @@ +package g0101_0200.s0160_intersection_of_two_linked_lists; + +import com_github_leetcode.ListNode; + +public class Solution { + public ListNode getIntersectionNode(ListNode headA, ListNode headB) { + ListNode pA = headA; + ListNode pB = headB; + while (pA != null || pB != null) { + if (pA != null && pB != null && pA.equals(pB)) { + return pA; + } + pA = pA == null ? headB : pA.next; + pB = pB == null ? headA : pB.next; + } + return null; + } +} diff --git a/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java b/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java new file mode 100644 index 000000000..9f0e62198 --- /dev/null +++ b/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java @@ -0,0 +1,21 @@ +package g0101_0200.s0162_find_peak_element; + +public class Solution { + public int findPeakElement(int[] nums) { + int start = 0; + int end = nums.length -1 ; + + while(start nums[mid]) { + start = mid + 1; + } else { + end = mid; + } + } + + return start; + } +} diff --git a/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java new file mode 100644 index 000000000..b4c1d5a00 --- /dev/null +++ b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java @@ -0,0 +1,22 @@ +package g0101_0200.s0164_maximum_gap; + +import java.util.Arrays; + +public class Solution { + public int maximumGap(int[] nums) { + if (nums.length < 2) + return 0; + + int ret = Integer.MIN_VALUE; + + Arrays.sort(nums); + + for (int i = 0; i < nums.length - 1; i++) { + if ((nums[i + 1] - nums[i])> ret) + ret = (nums[i + 1] - nums[i]); + + } + + return ret; + } +} diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java new file mode 100644 index 000000000..afdbcbaf4 --- /dev/null +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -0,0 +1,44 @@ +package g0101_0200.s0165_compare_version_numbers; + +public class Solution { + public static int compareVersion(String version1, String version2) { + String[] ver1 = version1.split("\\.", 0); + String[] ver2 = version2.split("\\.", 0); + int i = 0; + while (i < ver1.length && i < ver2.length) { + String s1 = removeLeadingZero(ver1[i]); + String s2 = removeLeadingZero(ver2[i]); + if (Integer.valueOf(s1)> Integer.valueOf(s2)) { + return 1; + } else if (Integer.valueOf(s1) < Integer.valueOf(s2)) { + return -1; + } + i++; + } + while (i < ver1.length) { + String s1 = removeLeadingZero(ver1[i]); + i++; + if (Integer.valueOf(s1) == 0) { + continue; + } + return (Integer.valueOf(s1)> 0) ? 1: -1; + } + while (i < ver2.length) { + String s2 = removeLeadingZero(ver2[i]); + i++; + if (Integer.valueOf(s2) == 0) { + continue; + } + return (Integer.valueOf(s2)> 0) ? -1: 1; + } + return 0; + } + + private static String removeLeadingZero(String s) { + int i = 0; + while (i < s.length() && s.charAt(i) == '0') { + i ++; + } + return (i != s.length()) ? s.substring(i): "0"; + } +} diff --git a/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java new file mode 100644 index 000000000..45becc13a --- /dev/null +++ b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java @@ -0,0 +1,48 @@ +package g0101_0200.s0166_fraction_to_recurring_decimal; + +import java.util.HashMap; +import java.util.Map; + +public class Solution { + public String fractionToDecimal(int numerator, int denominator) { + if (numerator==0) { + return "0"; + } + + StringBuilder sb = new StringBuilder(); + + //negative case + if (numerator>0 && denominator<0 || numerator<0 && denominator>0) { + sb.append("-"); + } + + long x = Math.abs(Long.valueOf(numerator)); + long y = Math.abs(Long.valueOf(denominator)); + + sb.append(String.valueOf(x/y)); + + long remainder = x % y; + if (remainder==0) { + return sb.toString(); + } + + //decimal case + sb.append("."); + + //store the remainder in a Hashmap because in the case of recurring decimal, the remainder repeats as dividend. + Map map = new HashMap(); + while (remainder != 0) { + if (map.containsKey(remainder)){ + sb.insert(map.get(remainder), "("); + sb.append(")"); + break; + } + //store the remainder and the index of it's occurence in the String + map.put(remainder, sb.length()); + remainder *= 10; + sb.append(String.valueOf(remainder/y)); + remainder %= y; + } + return sb.toString(); + } +} diff --git a/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java new file mode 100644 index 000000000..636638ae1 --- /dev/null +++ b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java @@ -0,0 +1,26 @@ +package g0101_0200.s0167_two_sum_ii_input_array_is_sorted; + +public class Solution { + public int[] twoSum(int[] numbers, int target) { + int res[] = new int[2]; + int i = 0; + int j = numbers.length - 1; + + while (i < j) { + int sum = numbers[i] + numbers[j]; + if (sum == target) { + res[0] = i + 1; + res[1] = j + 1; + return res; + } else if (sum < target) { + i++; + } + + else { + j--; + } + + } + return res; + } +} diff --git a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java new file mode 100644 index 000000000..f77fcc920 --- /dev/null +++ b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java @@ -0,0 +1,12 @@ +package g0101_0200.s0168_excel_sheet_column_title; + +public class Solution { + public String convertToTitle(int columnNumber) { + String str = ""; + while (columnNumber> 0) { + str = String.valueOf((char) (--columnNumber % 26 + 'A')) + str; + columnNumber /= 26; + } + return str; + } +} diff --git a/src/main/java/g0101_0200/s0169_majority_element/Solution.java b/src/main/java/g0101_0200/s0169_majority_element/Solution.java new file mode 100644 index 000000000..dd1ef56ea --- /dev/null +++ b/src/main/java/g0101_0200/s0169_majority_element/Solution.java @@ -0,0 +1,34 @@ +package g0101_0200.s0169_majority_element; + +public class Solution { + public int majorityElement(int[] arr) { + int count=1; + int majority=arr[0]; + //For Potential Majority Element + for(int i=1;i1) { + count--; + }else { + majority=arr[i]; + } + } + } + + //For Confirmation + count=0; + for(int i=0;i=(arr.length/2)+1) { + return majority; + }else + return -1; + + } +} diff --git a/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java new file mode 100644 index 000000000..34a45f053 --- /dev/null +++ b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java @@ -0,0 +1,12 @@ +package g0101_0200.s0171_excel_sheet_column_number; + +public class Solution { + public int titleToNumber(String s) { + int num = 0; + int pow= 0; + for(int i=s.length()-1; i>=0; i--){ + num += Math.pow(26,pow++) * (int)(s.charAt(i)-'A'+1); + } + return num; + } +} diff --git a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java new file mode 100644 index 000000000..efc970460 --- /dev/null +++ b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java @@ -0,0 +1,13 @@ +package g0101_0200.s0172_factorial_trailing_zeroes; + +public class Solution { + public static int trailingZeroes(int n) { + int base = 5; + int count=0; + while(n>=base){ + count+= n/base; + base=base*5; + } + return count; + } +} diff --git a/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java new file mode 100644 index 000000000..369c7f0c0 --- /dev/null +++ b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java @@ -0,0 +1,30 @@ +package g0101_0200.s0160_intersection_of_two_linked_lists; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +import com_github_leetcode.ListNode; + +public class SolutionTest { + @Test + public void getIntersectionNode() { + ListNode nodeA = new ListNode(4, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))); + ListNode nodeB = new ListNode(5, new ListNode(6, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5)))))); + + int intersectVal = 8; + int skipA = 2; + int skipB = 3; + + for (int i = 0; i < skipB; i++) { + if(i < skipA) { + nodeA = nodeA.next; + } + nodeB = nodeB.next; + } + + assertThat(new Solution().getIntersectionNode(nodeA, nodeB).val, equalTo(intersectVal)); + + } +} diff --git a/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java b/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java new file mode 100644 index 000000000..4a1c0099b --- /dev/null +++ b/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0162_find_peak_element; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void findPeakElement() { + assertThat(new Solution().findPeakElement(new int[] { 1, 2, 3, 1 }), equalTo(2)); + } +} diff --git a/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java b/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java new file mode 100644 index 000000000..ce9c53494 --- /dev/null +++ b/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java @@ -0,0 +1,14 @@ +package g0101_0200.s0164_maximum_gap; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +public class SolutionTest { + @Test + public void maximumGap() { + + assertThat(new Solution().maximumGap(new int[] {3,6,9,1}), equalTo(3)); + } +} diff --git a/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java new file mode 100644 index 000000000..a77450d2d --- /dev/null +++ b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java @@ -0,0 +1,15 @@ +package g0101_0200.s0165_compare_version_numbers; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void compareVersion() { + + assertThat(Solution.compareVersion("1.01", "1.001"), equalTo(0)); + } + + +} diff --git a/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java b/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java new file mode 100644 index 000000000..1d9b3cb7e --- /dev/null +++ b/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0166_fraction_to_recurring_decimal; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void fractionToDecimal() { + assertThat(new Solution().fractionToDecimal(1, 2), equalTo("0.5")); + } +} diff --git a/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java b/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java new file mode 100644 index 000000000..d18c54be1 --- /dev/null +++ b/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0167_two_sum_ii_input_array_is_sorted; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void twoSum() { + assertThat(new Solution().twoSum(new int[] { 2, 7, 11, 15 }, 9), equalTo(new int[] { 1, 2 })); + } +} diff --git a/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java b/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java new file mode 100644 index 000000000..02716b1a1 --- /dev/null +++ b/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0168_excel_sheet_column_title; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void convertToTitle() { + assertThat(new Solution().convertToTitle(1), equalTo("A")); + } +} diff --git a/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java b/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java new file mode 100644 index 000000000..eda906103 --- /dev/null +++ b/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0169_majority_element; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void majorityElement() { + assertThat(new Solution().majorityElement(new int[] {3,2,3}), equalTo(3)); + } +} diff --git a/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java b/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java new file mode 100644 index 000000000..defad5660 --- /dev/null +++ b/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0171_excel_sheet_column_number; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void titleToNumber() { + assertThat(new Solution().titleToNumber("A"), equalTo(1)); + } +} diff --git a/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java new file mode 100644 index 000000000..069092e74 --- /dev/null +++ b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java @@ -0,0 +1,12 @@ +package g0101_0200.s0172_factorial_trailing_zeroes; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.Test; + +public class SolutionTest { + @Test + public void trailingZeroes() { + assertThat(Solution.trailingZeroes(3), equalTo(0)); + } +} From 83b71ab250b1724fbf0a809a8376e6aea22d0947 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 10:12:55 +0200 Subject: [PATCH 02/13] spotlessApply --- .../Solution.java | 4 +- .../s0162_find_peak_element/Solution.java | 35 ++++---- .../s0164_maximum_gap/Solution.java | 21 +++-- .../Solution.java | 12 +-- .../Solution.java | 79 ++++++++++--------- .../Solution.java | 39 +++++---- .../Solution.java | 16 ++-- .../s0169_majority_element/Solution.java | 58 +++++++------- .../Solution.java | 16 ++-- .../Solution.java | 10 +-- .../SolutionTest.java | 43 +++++----- .../s0162_find_peak_element/SolutionTest.java | 9 ++- .../s0164_maximum_gap/SolutionTest.java | 10 +-- .../SolutionTest.java | 9 +-- .../SolutionTest.java | 7 +- .../SolutionTest.java | 9 ++- .../SolutionTest.java | 9 ++- .../s0169_majority_element/SolutionTest.java | 9 ++- .../SolutionTest.java | 9 ++- .../SolutionTest.java | 7 +- 20 files changed, 208 insertions(+), 203 deletions(-) diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java index 4abdcfb17..4d1010df5 100644 --- a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -3,12 +3,12 @@ import com_github_leetcode.ListNode; public class Solution { - public ListNode getIntersectionNode(ListNode headA, ListNode headB) { + public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode pA = headA; ListNode pB = headB; while (pA != null || pB != null) { if (pA != null && pB != null && pA.equals(pB)) { - return pA; + return pA; } pA = pA == null ? headB : pA.next; pB = pB == null ? headA : pB.next; diff --git a/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java b/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java index 9f0e62198..5cb02e67a 100644 --- a/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java +++ b/src/main/java/g0101_0200/s0162_find_peak_element/Solution.java @@ -1,21 +1,22 @@ package g0101_0200.s0162_find_peak_element; public class Solution { - public int findPeakElement(int[] nums) { - int start = 0; - int end = nums.length -1 ; - - while(start nums[mid]) { - start = mid + 1; - } else { - end = mid; - } - } - - return start; - } + public int findPeakElement(int[] nums) { + int start = 0; + int end = nums.length - 1; + + while (start < end) { + // This is done because start and end might be big numbers, so it might exceed the + // integer limit. + int mid = start + ((end - start) / 2); + + if (nums[mid + 1]> nums[mid]) { + start = mid + 1; + } else { + end = mid; + } + } + + return start; + } } diff --git a/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java index b4c1d5a00..f01d9b9aa 100644 --- a/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java +++ b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java @@ -3,20 +3,17 @@ import java.util.Arrays; public class Solution { - public int maximumGap(int[] nums) { - if (nums.length < 2) - return 0; + public int maximumGap(int[] nums) { + if (nums.length < 2) return 0; - int ret = Integer.MIN_VALUE; + int ret = Integer.MIN_VALUE; - Arrays.sort(nums); + Arrays.sort(nums); - for (int i = 0; i < nums.length - 1; i++) { - if ((nums[i + 1] - nums[i])> ret) - ret = (nums[i + 1] - nums[i]); + for (int i = 0; i < nums.length - 1; i++) { + if ((nums[i + 1] - nums[i])> ret) ret = (nums[i + 1] - nums[i]); + } - } - - return ret; - } + return ret; + } } diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index afdbcbaf4..e1678ce60 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -19,17 +19,17 @@ public static int compareVersion(String version1, String version2) { String s1 = removeLeadingZero(ver1[i]); i++; if (Integer.valueOf(s1) == 0) { - continue; + continue; } - return (Integer.valueOf(s1)> 0) ? 1: -1; + return (Integer.valueOf(s1)> 0) ? 1 : -1; } while (i < ver2.length) { String s2 = removeLeadingZero(ver2[i]); i++; if (Integer.valueOf(s2) == 0) { - continue; + continue; } - return (Integer.valueOf(s2)> 0) ? -1: 1; + return (Integer.valueOf(s2)> 0) ? -1 : 1; } return 0; } @@ -37,8 +37,8 @@ public static int compareVersion(String version1, String version2) { private static String removeLeadingZero(String s) { int i = 0; while (i < s.length() && s.charAt(i) == '0') { - i ++; + i++; } - return (i != s.length()) ? s.substring(i): "0"; + return (i != s.length()) ? s.substring(i) : "0"; } } diff --git a/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java index 45becc13a..6a28f64db 100644 --- a/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java +++ b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java @@ -5,44 +5,45 @@ public class Solution { public String fractionToDecimal(int numerator, int denominator) { - if (numerator==0) { - return "0"; + if (numerator == 0) { + return "0"; } - - StringBuilder sb = new StringBuilder(); - - //negative case - if (numerator>0 && denominator<0 || numerator<0 && denominator>0) { - sb.append("-"); - } - - long x = Math.abs(Long.valueOf(numerator)); - long y = Math.abs(Long.valueOf(denominator)); - - sb.append(String.valueOf(x/y)); - - long remainder = x % y; - if (remainder==0) { - return sb.toString(); - } - - //decimal case - sb.append("."); - - //store the remainder in a Hashmap because in the case of recurring decimal, the remainder repeats as dividend. - Map map = new HashMap(); - while (remainder != 0) { - if (map.containsKey(remainder)){ - sb.insert(map.get(remainder), "("); - sb.append(")"); - break; - } - //store the remainder and the index of it's occurence in the String - map.put(remainder, sb.length()); - remainder *= 10; - sb.append(String.valueOf(remainder/y)); - remainder %= y; - } - return sb.toString(); - } + + StringBuilder sb = new StringBuilder(); + + // negative case + if (numerator> 0 && denominator < 0 || numerator < 0 && denominator> 0) { + sb.append("-"); + } + + long x = Math.abs(Long.valueOf(numerator)); + long y = Math.abs(Long.valueOf(denominator)); + + sb.append(String.valueOf(x / y)); + + long remainder = x % y; + if (remainder == 0) { + return sb.toString(); + } + + // decimal case + sb.append("."); + + // store the remainder in a Hashmap because in the case of recurring decimal, the remainder + // repeats as dividend. + Map map = new HashMap(); + while (remainder != 0) { + if (map.containsKey(remainder)) { + sb.insert(map.get(remainder), "("); + sb.append(")"); + break; + } + // store the remainder and the index of it's occurence in the String + map.put(remainder, sb.length()); + remainder *= 10; + sb.append(String.valueOf(remainder / y)); + remainder %= y; + } + return sb.toString(); + } } diff --git a/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java index 636638ae1..41e5d2c13 100644 --- a/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java +++ b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java @@ -1,26 +1,23 @@ package g0101_0200.s0167_two_sum_ii_input_array_is_sorted; public class Solution { - public int[] twoSum(int[] numbers, int target) { - int res[] = new int[2]; - int i = 0; - int j = numbers.length - 1; + public int[] twoSum(int[] numbers, int target) { + int res[] = new int[2]; + int i = 0; + int j = numbers.length - 1; - while (i < j) { - int sum = numbers[i] + numbers[j]; - if (sum == target) { - res[0] = i + 1; - res[1] = j + 1; - return res; - } else if (sum < target) { - i++; - } - - else { - j--; - } - - } - return res; - } + while (i < j) { + int sum = numbers[i] + numbers[j]; + if (sum == target) { + res[0] = i + 1; + res[1] = j + 1; + return res; + } else if (sum < target) { + i++; + } else { + j--; + } + } + return res; + } } diff --git a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java index f77fcc920..6acca7e42 100644 --- a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java +++ b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java @@ -1,12 +1,12 @@ package g0101_0200.s0168_excel_sheet_column_title; public class Solution { - public String convertToTitle(int columnNumber) { - String str = ""; - while (columnNumber> 0) { - str = String.valueOf((char) (--columnNumber % 26 + 'A')) + str; - columnNumber /= 26; - } - return str; - } + public String convertToTitle(int columnNumber) { + String str = ""; + while (columnNumber> 0) { + str = String.valueOf((char) (--columnNumber % 26 + 'A')) + str; + columnNumber /= 26; + } + return str; + } } diff --git a/src/main/java/g0101_0200/s0169_majority_element/Solution.java b/src/main/java/g0101_0200/s0169_majority_element/Solution.java index dd1ef56ea..4e437ebc1 100644 --- a/src/main/java/g0101_0200/s0169_majority_element/Solution.java +++ b/src/main/java/g0101_0200/s0169_majority_element/Solution.java @@ -1,34 +1,32 @@ package g0101_0200.s0169_majority_element; public class Solution { - public int majorityElement(int[] arr) { - int count=1; - int majority=arr[0]; - //For Potential Majority Element - for(int i=1;i1) { - count--; - }else { - majority=arr[i]; - } - } - } - - //For Confirmation - count=0; - for(int i=0;i=(arr.length/2)+1) { - return majority; - }else - return -1; - - } + public int majorityElement(int[] arr) { + int count = 1; + int majority = arr[0]; + // For Potential Majority Element + for (int i = 1; i < arr.length; i++) { + if (arr[i] == majority) { + count++; + } else { + if (count> 1) { + count--; + } else { + majority = arr[i]; + } + } + } + + // For Confirmation + count = 0; + for (int i = 0; i < arr.length; i++) { + if (arr[i] == majority) { + count++; + } + } + + if (count>= (arr.length / 2) + 1) { + return majority; + } else return -1; + } } diff --git a/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java index 34a45f053..df0d979b3 100644 --- a/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java +++ b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java @@ -1,12 +1,12 @@ package g0101_0200.s0171_excel_sheet_column_number; public class Solution { - public int titleToNumber(String s) { - int num = 0; - int pow= 0; - for(int i=s.length()-1; i>=0; i--){ - num += Math.pow(26,pow++) * (int)(s.charAt(i)-'A'+1); - } - return num; - } + public int titleToNumber(String s) { + int num = 0; + int pow = 0; + for (int i = s.length() - 1; i>= 0; i--) { + num += Math.pow(26, pow++) * (int) (s.charAt(i) - 'A' + 1); + } + return num; + } } diff --git a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java index efc970460..8dfc1b6b8 100644 --- a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java +++ b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java @@ -1,12 +1,12 @@ package g0101_0200.s0172_factorial_trailing_zeroes; public class Solution { - public static int trailingZeroes(int n) { + public static int trailingZeroes(int n) { int base = 5; - int count=0; - while(n>=base){ - count+= n/base; - base=base*5; + int count = 0; + while (n>= base) { + count += n / base; + base = base * 5; } return count; } diff --git a/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java index 369c7f0c0..7b83af37d 100644 --- a/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java +++ b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java @@ -3,28 +3,33 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; -import org.junit.Test; - import com_github_leetcode.ListNode; +import org.junit.Test; public class SolutionTest { - @Test - public void getIntersectionNode() { - ListNode nodeA = new ListNode(4, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))); - ListNode nodeB = new ListNode(5, new ListNode(6, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5)))))); - - int intersectVal = 8; - int skipA = 2; - int skipB = 3; - - for (int i = 0; i < skipB; i++) { - if(i < skipA) { - nodeA = nodeA.next; - } - nodeB = nodeB.next; - } - - assertThat(new Solution().getIntersectionNode(nodeA, nodeB).val, equalTo(intersectVal)); + @Test + public void getIntersectionNode() { + ListNode nodeA = + new ListNode(4, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))); + ListNode nodeB = + new ListNode( + 5, + new ListNode( + 6, + new ListNode( + 1, new ListNode(8, new ListNode(4, new ListNode(5)))))); + + int intersectVal = 8; + int skipA = 2; + int skipB = 3; + + for (int i = 0; i < skipB; i++) { + if (i < skipA) { + nodeA = nodeA.next; + } + nodeB = nodeB.next; + } + assertThat(new Solution().getIntersectionNode(nodeA, nodeB).val, equalTo(intersectVal)); } } diff --git a/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java b/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java index 4a1c0099b..5318c98eb 100644 --- a/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java +++ b/src/test/java/g0101_0200/s0162_find_peak_element/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void findPeakElement() { - assertThat(new Solution().findPeakElement(new int[] { 1, 2, 3, 1 }), equalTo(2)); - } + @Test + public void findPeakElement() { + assertThat(new Solution().findPeakElement(new int[] {1, 2, 3, 1}), equalTo(2)); + } } diff --git a/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java b/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java index ce9c53494..dedc65c95 100644 --- a/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java +++ b/src/test/java/g0101_0200/s0164_maximum_gap/SolutionTest.java @@ -6,9 +6,9 @@ import org.junit.Test; public class SolutionTest { - @Test - public void maximumGap() { - - assertThat(new Solution().maximumGap(new int[] {3,6,9,1}), equalTo(3)); - } + @Test + public void maximumGap() { + + assertThat(new Solution().maximumGap(new int[] {3, 6, 9, 1}), equalTo(3)); + } } diff --git a/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java index a77450d2d..cbd934a6a 100644 --- a/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java +++ b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java @@ -2,14 +2,13 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test + @Test public void compareVersion() { - - assertThat(Solution.compareVersion("1.01", "1.001"), equalTo(0)); - } - + assertThat(Solution.compareVersion("1.01", "1.001"), equalTo(0)); + } } diff --git a/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java b/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java index 1d9b3cb7e..8e2c8d5c4 100644 --- a/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java +++ b/src/test/java/g0101_0200/s0166_fraction_to_recurring_decimal/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test + @Test public void fractionToDecimal() { - assertThat(new Solution().fractionToDecimal(1, 2), equalTo("0.5")); - } + assertThat(new Solution().fractionToDecimal(1, 2), equalTo("0.5")); + } } diff --git a/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java b/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java index d18c54be1..1d07e3331 100644 --- a/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java +++ b/src/test/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void twoSum() { - assertThat(new Solution().twoSum(new int[] { 2, 7, 11, 15 }, 9), equalTo(new int[] { 1, 2 })); - } + @Test + public void twoSum() { + assertThat(new Solution().twoSum(new int[] {2, 7, 11, 15}, 9), equalTo(new int[] {1, 2})); + } } diff --git a/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java b/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java index 02716b1a1..ddad41980 100644 --- a/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java +++ b/src/test/java/g0101_0200/s0168_excel_sheet_column_title/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void convertToTitle() { - assertThat(new Solution().convertToTitle(1), equalTo("A")); - } + @Test + public void convertToTitle() { + assertThat(new Solution().convertToTitle(1), equalTo("A")); + } } diff --git a/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java b/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java index eda906103..5410f33ed 100644 --- a/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java +++ b/src/test/java/g0101_0200/s0169_majority_element/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void majorityElement() { - assertThat(new Solution().majorityElement(new int[] {3,2,3}), equalTo(3)); - } + @Test + public void majorityElement() { + assertThat(new Solution().majorityElement(new int[] {3, 2, 3}), equalTo(3)); + } } diff --git a/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java b/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java index defad5660..949193a3b 100644 --- a/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java +++ b/src/test/java/g0101_0200/s0171_excel_sheet_column_number/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void titleToNumber() { - assertThat(new Solution().titleToNumber("A"), equalTo(1)); - } + @Test + public void titleToNumber() { + assertThat(new Solution().titleToNumber("A"), equalTo(1)); + } } diff --git a/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java index 069092e74..8d30fed1d 100644 --- a/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java +++ b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java @@ -2,11 +2,12 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; + import org.junit.Test; public class SolutionTest { - @Test - public void trailingZeroes() { - assertThat(Solution.trailingZeroes(3), equalTo(0)); + @Test + public void trailingZeroes() { + assertThat(Solution.trailingZeroes(3), equalTo(0)); } } From 614414878f347c589bdf8d86b1124180723fc4f1 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 10:19:04 +0200 Subject: [PATCH 03/13] another fix --- src/main/java/com_github_leetcode/ListNode.java | 6 ++++++ src/main/java/g0101_0200/s0164_maximum_gap/Solution.java | 8 ++++++-- .../s0167_two_sum_ii_input_array_is_sorted/Solution.java | 2 +- .../java/g0101_0200/s0169_majority_element/Solution.java | 4 +++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/com_github_leetcode/ListNode.java b/src/main/java/com_github_leetcode/ListNode.java index 7d10335a8..db6c73aaa 100644 --- a/src/main/java/com_github_leetcode/ListNode.java +++ b/src/main/java/com_github_leetcode/ListNode.java @@ -16,6 +16,12 @@ public ListNode(int val, ListNode next) { this.next = next; } + @Override + public boolean equals(Object obj) { + return this.val == ((ListNode) obj).val; + } + + @Override public String toString() { StringBuilder result = new StringBuilder("" + val); ListNode current = next; diff --git a/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java index f01d9b9aa..3b9799b4f 100644 --- a/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java +++ b/src/main/java/g0101_0200/s0164_maximum_gap/Solution.java @@ -4,14 +4,18 @@ public class Solution { public int maximumGap(int[] nums) { - if (nums.length < 2) return 0; + if (nums.length < 2) { + return 0; + } int ret = Integer.MIN_VALUE; Arrays.sort(nums); for (int i = 0; i < nums.length - 1; i++) { - if ((nums[i + 1] - nums[i])> ret) ret = (nums[i + 1] - nums[i]); + if ((nums[i + 1] - nums[i])> ret) { + ret = (nums[i + 1] - nums[i]); + } } return ret; diff --git a/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java index 41e5d2c13..25df4854d 100644 --- a/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java +++ b/src/main/java/g0101_0200/s0167_two_sum_ii_input_array_is_sorted/Solution.java @@ -2,7 +2,7 @@ public class Solution { public int[] twoSum(int[] numbers, int target) { - int res[] = new int[2]; + int[] res = new int[2]; int i = 0; int j = numbers.length - 1; diff --git a/src/main/java/g0101_0200/s0169_majority_element/Solution.java b/src/main/java/g0101_0200/s0169_majority_element/Solution.java index 4e437ebc1..bd332e699 100644 --- a/src/main/java/g0101_0200/s0169_majority_element/Solution.java +++ b/src/main/java/g0101_0200/s0169_majority_element/Solution.java @@ -27,6 +27,8 @@ public int majorityElement(int[] arr) { if (count>= (arr.length / 2) + 1) { return majority; - } else return -1; + } else { + return -1; + } } } From dc0313aeb99700f69a9cfc39d97405abb3abf97b Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 10:46:07 +0200 Subject: [PATCH 04/13] another fix --- src/main/java/com_github_leetcode/ListNode.java | 13 ++++++++++++- .../s0165_compare_version_numbers/Solution.java | 2 ++ .../Solution.java | 1 + .../Solution.java | 17 +++++++++++------ .../Solution.java | 2 +- .../Solution.java | 2 ++ 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/main/java/com_github_leetcode/ListNode.java b/src/main/java/com_github_leetcode/ListNode.java index db6c73aaa..14db682fa 100644 --- a/src/main/java/com_github_leetcode/ListNode.java +++ b/src/main/java/com_github_leetcode/ListNode.java @@ -1,5 +1,7 @@ package com_github_leetcode; +import java.util.Objects; + @SuppressWarnings("java:S1104") public class ListNode { public int val; @@ -16,9 +18,18 @@ public ListNode(int val, ListNode next) { this.next = next; } + @Override + public int hashCode() { + return Objects.hash(val); + } + @Override public boolean equals(Object obj) { - return this.val == ((ListNode) obj).val; + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + ListNode other = (ListNode) obj; + return val == other.val; } @Override diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index e1678ce60..a8c5ae6db 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -1,6 +1,8 @@ package g0101_0200.s0165_compare_version_numbers; public class Solution { + private Solution() {} + public static int compareVersion(String version1, String version2) { String[] ver1 = version1.split("\\.", 0); String[] ver2 = version2.split("\\.", 0); diff --git a/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java index 6a28f64db..ff8b9919d 100644 --- a/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java +++ b/src/main/java/g0101_0200/s0166_fraction_to_recurring_decimal/Solution.java @@ -3,6 +3,7 @@ import java.util.HashMap; import java.util.Map; +@SuppressWarnings("java:S2153") public class Solution { public String fractionToDecimal(int numerator, int denominator) { if (numerator == 0) { diff --git a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java index 6acca7e42..47bf3d20b 100644 --- a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java +++ b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java @@ -1,12 +1,17 @@ package g0101_0200.s0168_excel_sheet_column_title; public class Solution { - public String convertToTitle(int columnNumber) { - String str = ""; - while (columnNumber> 0) { - str = String.valueOf((char) (--columnNumber % 26 + 'A')) + str; - columnNumber /= 26; + public String convertToTitle(int n) { + StringBuilder sb = new StringBuilder(); + while (n != 0) { + int remainder = n % 26; + if (remainder == 0) remainder += 26; + if (n>= remainder) { + n -= remainder; + sb.append((char) (remainder + 64)); + } + n /= 26; } - return str; + return sb.reverse().toString(); } } diff --git a/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java index df0d979b3..a520f5ace 100644 --- a/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java +++ b/src/main/java/g0101_0200/s0171_excel_sheet_column_number/Solution.java @@ -5,7 +5,7 @@ public int titleToNumber(String s) { int num = 0; int pow = 0; for (int i = s.length() - 1; i>= 0; i--) { - num += Math.pow(26, pow++) * (int) (s.charAt(i) - 'A' + 1); + num += (int) Math.pow(26, pow++) * (s.charAt(i) - 'A' + 1); } return num; } diff --git a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java index 8dfc1b6b8..82410f739 100644 --- a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java +++ b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java @@ -1,6 +1,8 @@ package g0101_0200.s0172_factorial_trailing_zeroes; public class Solution { + private Solution() {} + public static int trailingZeroes(int n) { int base = 5; int count = 0; From 910303ae4ab0080dff5161a84911689d0cd82485 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 10:48:54 +0200 Subject: [PATCH 05/13] another fix --- src/main/java/com_github_leetcode/ListNode.java | 8 ++++++-- .../s0168_excel_sheet_column_title/Solution.java | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com_github_leetcode/ListNode.java b/src/main/java/com_github_leetcode/ListNode.java index 14db682fa..426e7bea5 100644 --- a/src/main/java/com_github_leetcode/ListNode.java +++ b/src/main/java/com_github_leetcode/ListNode.java @@ -25,8 +25,12 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null) return false; + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } if (getClass() != obj.getClass()) return false; ListNode other = (ListNode) obj; return val == other.val; diff --git a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java index 47bf3d20b..5073c831c 100644 --- a/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java +++ b/src/main/java/g0101_0200/s0168_excel_sheet_column_title/Solution.java @@ -5,7 +5,9 @@ public String convertToTitle(int n) { StringBuilder sb = new StringBuilder(); while (n != 0) { int remainder = n % 26; - if (remainder == 0) remainder += 26; + if (remainder == 0) { + remainder += 26; + } if (n>= remainder) { n -= remainder; sb.append((char) (remainder + 64)); From 52b565827e05cee3c386a0886f5fe7ecf61fd78c Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 11:02:46 +0200 Subject: [PATCH 06/13] fix --- .../java/com_github_leetcode/ListNode.java | 20 ------------------- .../Solution.java | 2 +- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/main/java/com_github_leetcode/ListNode.java b/src/main/java/com_github_leetcode/ListNode.java index 426e7bea5..28401a21b 100644 --- a/src/main/java/com_github_leetcode/ListNode.java +++ b/src/main/java/com_github_leetcode/ListNode.java @@ -1,7 +1,5 @@ package com_github_leetcode; -import java.util.Objects; - @SuppressWarnings("java:S1104") public class ListNode { public int val; @@ -18,24 +16,6 @@ public ListNode(int val, ListNode next) { this.next = next; } - @Override - public int hashCode() { - return Objects.hash(val); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) return false; - ListNode other = (ListNode) obj; - return val == other.val; - } - @Override public String toString() { StringBuilder result = new StringBuilder("" + val); diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java index 4d1010df5..3ff463b7f 100644 --- a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -7,7 +7,7 @@ public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode pA = headA; ListNode pB = headB; while (pA != null || pB != null) { - if (pA != null && pB != null && pA.equals(pB)) { + if (pA != null && pB != null && pA.toString().equals(pB.toString())) { return pA; } pA = pA == null ? headB : pA.next; From 6d7883f764c9eeff1a588a5cb1599deb9fc6edbb Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 11:27:03 +0200 Subject: [PATCH 07/13] fix --- .../Solution.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java index 3ff463b7f..b7b03fa86 100644 --- a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -4,15 +4,12 @@ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { - ListNode pA = headA; - ListNode pB = headB; - while (pA != null || pB != null) { - if (pA != null && pB != null && pA.toString().equals(pB.toString())) { - return pA; - } - pA = pA == null ? headB : pA.next; - pB = pB == null ? headA : pB.next; + ListNode node1 = headA; + ListNode node2 = headB; + while (!node1.toString().equals(node2.toString())) { + node1 = node1 == null ? headB : node1.next; + node2 = node2 == null ? headA : node2.next; } - return null; + return node1; } } From 4ac7d26b31b0e88006a831aff49f69485d7ce6d7 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 12:11:27 +0200 Subject: [PATCH 08/13] fix --- .../s0160_intersection_of_two_linked_lists/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java index b7b03fa86..031bcdf56 100644 --- a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -6,7 +6,7 @@ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode node1 = headA; ListNode node2 = headB; - while (!node1.toString().equals(node2.toString())) { + while (node1.val != node2.val) { node1 = node1 == null ? headB : node1.next; node2 = node2 == null ? headA : node2.next; } From 4a28f8f1eea3187f341ac6a18d803f7d5b704029 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 12:25:59 +0200 Subject: [PATCH 09/13] remove static fields --- .../g0101_0200/s0165_compare_version_numbers/Solution.java | 5 ++--- .../g0101_0200/s0172_factorial_trailing_zeroes/Solution.java | 3 +-- .../s0165_compare_version_numbers/SolutionTest.java | 2 +- .../s0172_factorial_trailing_zeroes/SolutionTest.java | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index a8c5ae6db..844a7aad8 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -1,9 +1,8 @@ package g0101_0200.s0165_compare_version_numbers; public class Solution { - private Solution() {} - public static int compareVersion(String version1, String version2) { + public int compareVersion(String version1, String version2) { String[] ver1 = version1.split("\\.", 0); String[] ver2 = version2.split("\\.", 0); int i = 0; @@ -36,7 +35,7 @@ public static int compareVersion(String version1, String version2) { return 0; } - private static String removeLeadingZero(String s) { + private String removeLeadingZero(String s) { int i = 0; while (i < s.length() && s.charAt(i) == '0') { i++; diff --git a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java index 82410f739..57f4d801b 100644 --- a/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java +++ b/src/main/java/g0101_0200/s0172_factorial_trailing_zeroes/Solution.java @@ -1,9 +1,8 @@ package g0101_0200.s0172_factorial_trailing_zeroes; public class Solution { - private Solution() {} - public static int trailingZeroes(int n) { + public int trailingZeroes(int n) { int base = 5; int count = 0; while (n>= base) { diff --git a/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java index cbd934a6a..1549343ef 100644 --- a/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java +++ b/src/test/java/g0101_0200/s0165_compare_version_numbers/SolutionTest.java @@ -9,6 +9,6 @@ public class SolutionTest { @Test public void compareVersion() { - assertThat(Solution.compareVersion("1.01", "1.001"), equalTo(0)); + assertThat(new Solution().compareVersion("1.01", "1.001"), equalTo(0)); } } diff --git a/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java index 8d30fed1d..309854154 100644 --- a/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java +++ b/src/test/java/g0101_0200/s0172_factorial_trailing_zeroes/SolutionTest.java @@ -8,6 +8,6 @@ public class SolutionTest { @Test public void trailingZeroes() { - assertThat(Solution.trailingZeroes(3), equalTo(0)); + assertThat(new Solution().trailingZeroes(3), equalTo(0)); } } From 7e2696ff6920915c6d9d371b4882182491cb67f0 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 12:29:36 +0200 Subject: [PATCH 10/13] fix problem 160 --- .../Solution.java | 3 ++- .../SolutionTest.java | 13 +++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java index 031bcdf56..17d84ee4a 100644 --- a/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java +++ b/src/main/java/g0101_0200/s0160_intersection_of_two_linked_lists/Solution.java @@ -2,11 +2,12 @@ import com_github_leetcode.ListNode; +@SuppressWarnings("java:S2583") public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode node1 = headA; ListNode node2 = headB; - while (node1.val != node2.val) { + while (node1 != node2) { node1 = node1 == null ? headB : node1.next; node2 = node2 == null ? headA : node2.next; } diff --git a/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java index 7b83af37d..52a62ec29 100644 --- a/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java +++ b/src/test/java/g0101_0200/s0160_intersection_of_two_linked_lists/SolutionTest.java @@ -9,15 +9,9 @@ public class SolutionTest { @Test public void getIntersectionNode() { - ListNode nodeA = - new ListNode(4, new ListNode(1, new ListNode(8, new ListNode(4, new ListNode(5))))); - ListNode nodeB = - new ListNode( - 5, - new ListNode( - 6, - new ListNode( - 1, new ListNode(8, new ListNode(4, new ListNode(5)))))); + ListNode intersectionListNode = new ListNode(8, new ListNode(4, new ListNode(5))); + ListNode nodeA = new ListNode(4, new ListNode(1, intersectionListNode)); + ListNode nodeB = new ListNode(5, new ListNode(6, new ListNode(1, intersectionListNode))); int intersectVal = 8; int skipA = 2; @@ -29,7 +23,6 @@ public void getIntersectionNode() { } nodeB = nodeB.next; } - assertThat(new Solution().getIntersectionNode(nodeA, nodeB).val, equalTo(intersectVal)); } } From eec5520fb006c4f0c897a142724686e3d48eb4ed Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 13:01:14 +0200 Subject: [PATCH 11/13] change solution for problem 165 --- .../Solution.java | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index 844a7aad8..78cdc97ae 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -3,43 +3,49 @@ public class Solution { public int compareVersion(String version1, String version2) { - String[] ver1 = version1.split("\\.", 0); - String[] ver2 = version2.split("\\.", 0); - int i = 0; - while (i < ver1.length && i < ver2.length) { - String s1 = removeLeadingZero(ver1[i]); - String s2 = removeLeadingZero(ver2[i]); - if (Integer.valueOf(s1)> Integer.valueOf(s2)) { - return 1; - } else if (Integer.valueOf(s1) < Integer.valueOf(s2)) { - return -1; + // acquire first number + int numA = 0; + int i; + for (i = 0; i < version1.length(); i++) { + char c = version1.charAt(i); + if (c == '.') { + break; + } else { + numA = numA * 10 + ((int) c - 48); } - i++; } - while (i < ver1.length) { - String s1 = removeLeadingZero(ver1[i]); - i++; - if (Integer.valueOf(s1) == 0) { - continue; - } - return (Integer.valueOf(s1)> 0) ? 1 : -1; - } - while (i < ver2.length) { - String s2 = removeLeadingZero(ver2[i]); - i++; - if (Integer.valueOf(s2) == 0) { - continue; + + // acquire second number + int numB = 0; + int j; + for (j = 0; j < version2.length(); j++) { + char c = version2.charAt(j); + if (c == '.') { + break; + } else { + numB = numB * 10 + ((int) c - 48); } - return (Integer.valueOf(s2)> 0) ? -1 : 1; } - return 0; - } - private String removeLeadingZero(String s) { - int i = 0; - while (i < s.length() && s.charAt(i) == '0') { - i++; + // compare + if (numA> numB) { + return 1; + } else if (numA < numB) { + return -1; + } else { // equal + String v1 = ""; + String v2 = ""; + + if (i != version1.length()) v1 = version1.substring(i + 1); + + if (j != version2.length()) v2 = version2.substring(j + 1); + + // if both versions end here, they are equal + if (v1.equals("") && v2.equals("")) { + return 0; + } else { + return compareVersion(v1, v2); + } } - return (i != s.length()) ? s.substring(i) : "0"; } } From 64522f30fa7c98246cf01b5be9a876fa7c9a257b Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 13:04:27 +0200 Subject: [PATCH 12/13] adding braces --- .../s0165_compare_version_numbers/Solution.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index 78cdc97ae..f3d0b5f8a 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -36,9 +36,13 @@ public int compareVersion(String version1, String version2) { String v1 = ""; String v2 = ""; - if (i != version1.length()) v1 = version1.substring(i + 1); + if (i != version1.length()) { + v1 = version1.substring(i + 1); + } - if (j != version2.length()) v2 = version2.substring(j + 1); + if (j != version2.length()) { + v2 = version2.substring(j + 1); + } // if both versions end here, they are equal if (v1.equals("") && v2.equals("")) { From 79efb99b9f30c750ea30568cbe077bbd8369b584 Mon Sep 17 00:00:00 2001 From: Ivan Menov Date: 2021年11月18日 13:11:01 +0200 Subject: [PATCH 13/13] remove unnecessary cast to int --- .../g0101_0200/s0165_compare_version_numbers/Solution.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java index f3d0b5f8a..996ec85b2 100644 --- a/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java +++ b/src/main/java/g0101_0200/s0165_compare_version_numbers/Solution.java @@ -11,7 +11,7 @@ public int compareVersion(String version1, String version2) { if (c == '.') { break; } else { - numA = numA * 10 + ((int) c - 48); + numA = numA * 10 + (c - 48); } } @@ -23,7 +23,7 @@ public int compareVersion(String version1, String version2) { if (c == '.') { break; } else { - numB = numB * 10 + ((int) c - 48); + numB = numB * 10 + (c - 48); } }

AltStyle によって変換されたページ (->オリジナル) /