From c6ffd4f04f2afe4543a3a1c2168b804a2a414178 Mon Sep 17 00:00:00 2001 From: bky373 Date: Mon, 3 Jun 2024 22:13:30 +0900 Subject: [PATCH] Solve week 4 problems --- counting-bits/bky373.java | 23 +++++++++++++++++++++++ group-anagrams/bky373.java | 19 +++++++++++++++++++ missing-number/bky373.java | 15 +++++++++++++++ number-of-1-bits/bky373.java | 17 +++++++++++++++++ reverse-bits/bky373.java | 17 +++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 counting-bits/bky373.java create mode 100644 group-anagrams/bky373.java create mode 100644 missing-number/bky373.java create mode 100644 number-of-1-bits/bky373.java create mode 100644 reverse-bits/bky373.java diff --git a/counting-bits/bky373.java b/counting-bits/bky373.java new file mode 100644 index 000000000..27a6e59f8 --- /dev/null +++ b/counting-bits/bky373.java @@ -0,0 +1,23 @@ +/** + * https://leetcode.com/problems/counting-bits/ + * + * time: O(n * log n) + * space: O(1) + */ +class Solution { + + public int[] countBits(int n) { + int[] ans = new int[n + 1]; + for (int i = 0; i <= n; i++) { + int x = i; + int cnt = 0; + while (x != 0) { + cnt++; + x &= (x - 1); + } + ans[i] = cnt; + } + return ans; + } +} + diff --git a/group-anagrams/bky373.java b/group-anagrams/bky373.java new file mode 100644 index 000000000..bde289cba --- /dev/null +++ b/group-anagrams/bky373.java @@ -0,0 +1,19 @@ +/** + * https://leetcode.com/problems/group-anagrams/ + * + * time: O(n * m log m) + * space: O(nm) + */ +class Solution { + + public List> groupAnagrams(String[] strs) { + Map> groups = new HashMap(); + for (String str : strs) { + char[] arr = str.toCharArray(); + Arrays.sort(arr); + groups.computeIfAbsent(new String(arr), k -> new ArrayList<>()) + .add(str); + } + return new ArrayList(groups.values()); + } +} diff --git a/missing-number/bky373.java b/missing-number/bky373.java new file mode 100644 index 000000000..07d2fe998 --- /dev/null +++ b/missing-number/bky373.java @@ -0,0 +1,15 @@ +/** + * https://leetcode.com/problems/missing-number/ + * + * time: O(n) + * space: O(1) + */ +class Solution { + public int missingNumber(int[] nums) { + int sum = nums.length * (nums.length+1) / 2; + for (int num : nums) { + sum -= num; + } + return sum; + } +} diff --git a/number-of-1-bits/bky373.java b/number-of-1-bits/bky373.java new file mode 100644 index 000000000..ff4d40612 --- /dev/null +++ b/number-of-1-bits/bky373.java @@ -0,0 +1,17 @@ +/** + * https://leetcode.com/problems/number-of-1-bits/ + * + * time: O(log n) + * space: O(1) + */ +class Solution { + + public int hammingWeight(int n) { + int cnt = 0; + while (n != 0) { + cnt++; + n &= (n - 1); + } + return cnt; + } +} diff --git a/reverse-bits/bky373.java b/reverse-bits/bky373.java new file mode 100644 index 000000000..ddad6ded5 --- /dev/null +++ b/reverse-bits/bky373.java @@ -0,0 +1,17 @@ +/** + * https://leetcode.com/problems/reverse-bits/ + * + * time: O(1) + * space: O(1) + */ +public class Solution { + + public int reverseBits(int n) { + int ans = 0; + for (int i = 0; i < 32; i++) { + ans = ans << 1 | n & 1; + n >>= 1; + } + return ans; + } +}