From f4771b2942b75ec4682cee5fb29eaf0263e3ff03 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 14:25:19 +0200 Subject: [PATCH 1/4] Added task 201. --- .../Solution.java | 43 +++++++++++++++++++ .../SolutionTest.java | 23 ++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java create mode 100644 src/test/java/g0201_0300/s0201_bitwise_and_of_numbers_range/SolutionTest.java diff --git a/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java b/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java new file mode 100644 index 000000000..03367176d --- /dev/null +++ b/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java @@ -0,0 +1,43 @@ +package g0201_0300.s0201_bitwise_and_of_numbers_range; + +public class Solution { + private static final int[] masks = + new int[] { + 0, + 0x80000000, + 0xC0000000, + 0xE0000000, + 0xF0000000, + 0xF8000000, + 0xFC000000, + 0xFE000000, + 0xFF000000, + 0xFF800000, + 0xFFC00000, + 0xFFE00000, + 0xFFF00000, + 0xFFF80000, + 0xFFFC0000, + 0xFFFE0000, + 0xFFFF0000, + 0xFFFF8000, + 0xFFFFC000, + 0xFFFFE000, + 0xFFFFF000, + 0xFFFFF800, + 0xFFFFFC00, + 0xFFFFFE00, + 0xFFFFFF00, + 0xFFFFFF80, + 0xFFFFFFC0, + 0xFFFFFFE0, + 0xFFFFFFF0, + 0xFFFFFFF8, + 0xFFFFFFFC, + 0xFFFFFFFE + }; + + public int rangeBitwiseAnd(int left, int right) { + return left == right ? left : right & masks[Integer.numberOfLeadingZeros(left ^ right)]; + } +} diff --git a/src/test/java/g0201_0300/s0201_bitwise_and_of_numbers_range/SolutionTest.java b/src/test/java/g0201_0300/s0201_bitwise_and_of_numbers_range/SolutionTest.java new file mode 100644 index 000000000..d6b5eebf2 --- /dev/null +++ b/src/test/java/g0201_0300/s0201_bitwise_and_of_numbers_range/SolutionTest.java @@ -0,0 +1,23 @@ +package g0201_0300.s0201_bitwise_and_of_numbers_range; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +public class SolutionTest { + @Test + public void rangeBitwiseAnd() { + assertThat(new Solution().rangeBitwiseAnd(5, 7), equalTo(4)); + } + + @Test + public void rangeBitwiseAnd2() { + assertThat(new Solution().rangeBitwiseAnd(0, 0), equalTo(0)); + } + + @Test + public void rangeBitwiseAnd3() { + assertThat(new Solution().rangeBitwiseAnd(1, 2147483647), equalTo(0)); + } +} From dbadfe31258be80c3c76022a82a64b491a47ff8f Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 16:45:34 +0200 Subject: [PATCH 2/4] Added task 202. --- .../s0202_happy_number/Solution.java | 28 +++++++++++++++++++ .../s0202_happy_number/SolutionTest.java | 13 +++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/main/java/g0201_0300/s0202_happy_number/Solution.java create mode 100644 src/test/java/g0201_0300/s0202_happy_number/SolutionTest.java diff --git a/src/main/java/g0201_0300/s0202_happy_number/Solution.java b/src/main/java/g0201_0300/s0202_happy_number/Solution.java new file mode 100644 index 000000000..c5c8e14e2 --- /dev/null +++ b/src/main/java/g0201_0300/s0202_happy_number/Solution.java @@ -0,0 +1,28 @@ +package g0201_0300.s0202_happy_number; + +public class Solution { + public boolean isHappy(int n) { + boolean happy = false; + int a = n; + int rem = 0; + int sum = 0; + if (a == 1 || a == 7) { + happy = true; + } else if (a > 1 && a < 10) { + happy = false; + } else { + while (a != 0) { + rem = a % 10; + sum = sum + (rem * rem); + a = a / 10; + } + if (sum != 1) { + happy = isHappy(sum); + } else { + happy = true; + } + } + + return happy; + } +} diff --git a/src/test/java/g0201_0300/s0202_happy_number/SolutionTest.java b/src/test/java/g0201_0300/s0202_happy_number/SolutionTest.java new file mode 100644 index 000000000..a5669529b --- /dev/null +++ b/src/test/java/g0201_0300/s0202_happy_number/SolutionTest.java @@ -0,0 +1,13 @@ +package g0201_0300.s0202_happy_number; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +public class SolutionTest { + @Test + public void isHappy() { + assertThat(new Solution().isHappy(19), equalTo(true)); + } +} From 4a72155a97e99ef25c207d687b3f7a3fc0aba492 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 16:54:09 +0200 Subject: [PATCH 3/4] Added task 203. --- .../Solution.java | 34 +++++++++++++++++++ .../SolutionTest.java | 22 ++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java create mode 100644 src/test/java/g0201_0300/s0203_remove_linked_list_elements/SolutionTest.java diff --git a/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java b/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java new file mode 100644 index 000000000..f8711b1fb --- /dev/null +++ b/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java @@ -0,0 +1,34 @@ +package g0201_0300.s0203_remove_linked_list_elements; + +import com_github_leetcode.ListNode; + +/* + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +public class Solution { + public ListNode removeElements(ListNode head, int val) { + if (head == null) { + return null; + } + while (head != null && head.val == val) { + head = head.next; + } + ListNode r = head, t = head; + while (r != null) { + if (r.val == val) { + t.next = r.next; + } else { + t = r; + } + r = r.next; + } + return head; + } +} diff --git a/src/test/java/g0201_0300/s0203_remove_linked_list_elements/SolutionTest.java b/src/test/java/g0201_0300/s0203_remove_linked_list_elements/SolutionTest.java new file mode 100644 index 000000000..9b321e615 --- /dev/null +++ b/src/test/java/g0201_0300/s0203_remove_linked_list_elements/SolutionTest.java @@ -0,0 +1,22 @@ +package g0201_0300.s0203_remove_linked_list_elements; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import com_github_leetcode.ListNode; +import org.junit.Test; + +public class SolutionTest { + @Test + public void removeElements() { + ListNode headActual = new ListNode(1); + headActual.next = new ListNode(2); + headActual.next.next = new ListNode(6); + headActual.next.next.next = new ListNode(3); + headActual.next.next.next.next = new ListNode(4); + headActual.next.next.next.next.next = new ListNode(5); + headActual.next.next.next.next.next.next = new ListNode(6); + assertThat( + new Solution().removeElements(headActual, 6).toString(), equalTo("1, 2, 3, 4, 5")); + } +} From e3b22ddcc946383c64ade2eb373244df521fd8f3 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 16:57:50 +0200 Subject: [PATCH 4/4] Fixed checkstyle. --- .../s0201_bitwise_and_of_numbers_range/Solution.java | 4 ++-- .../s0203_remove_linked_list_elements/Solution.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java b/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java index 03367176d..e054dfefd 100644 --- a/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java +++ b/src/main/java/g0201_0300/s0201_bitwise_and_of_numbers_range/Solution.java @@ -1,7 +1,7 @@ package g0201_0300.s0201_bitwise_and_of_numbers_range; public class Solution { - private static final int[] masks = + private static final int[] MASKS = new int[] { 0, 0x80000000, @@ -38,6 +38,6 @@ public class Solution { }; public int rangeBitwiseAnd(int left, int right) { - return left == right ? left : right & masks[Integer.numberOfLeadingZeros(left ^ right)]; + return left == right ? left : right & MASKS[Integer.numberOfLeadingZeros(left ^ right)]; } } diff --git a/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java b/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java index f8711b1fb..fa9838786 100644 --- a/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java +++ b/src/main/java/g0201_0300/s0203_remove_linked_list_elements/Solution.java @@ -20,7 +20,8 @@ public ListNode removeElements(ListNode head, int val) { while (head != null && head.val == val) { head = head.next; } - ListNode r = head, t = head; + ListNode r = head; + ListNode t = head; while (r != null) { if (r.val == val) { t.next = r.next;