From 20f490950aa3624a1b780c3ca6034fc03929a720 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:31:38 +0900 Subject: [PATCH 1/5] week2 valid-anagram solution commit --- valid-anagram/f-euxan21.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 valid-anagram/f-euxan21.java diff --git a/valid-anagram/f-euxan21.java b/valid-anagram/f-euxan21.java new file mode 100644 index 000000000..87712651d --- /dev/null +++ b/valid-anagram/f-euxan21.java @@ -0,0 +1,27 @@ +// time : O(n) +// space : O(n) + +class Solution { + public boolean isAnagram(String s, String t) { + char[] sToChar = s.toCharArray(); + char[] tToChar = t.toCharArray(); + + int[] charCount = new int[26]; + + for(char c : sToChar) { + charCount[c - 'a']++; + } + + for(char c : tToChar) { + charCount[c - 'a']--; + } + + for(int i : charCount) { + if(i != 0) { + return false; + } + } + + return true; + } +} From af285fb2532b5f993903628052cd6d0736405cb3 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Tue, 20 Aug 2024 20:20:27 +0900 Subject: [PATCH 2/5] Create f-exuan21.java Counting bits solutions --- counting-bits/f-exuan21.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 counting-bits/f-exuan21.java diff --git a/counting-bits/f-exuan21.java b/counting-bits/f-exuan21.java new file mode 100644 index 000000000..6357186b1 --- /dev/null +++ b/counting-bits/f-exuan21.java @@ -0,0 +1,15 @@ +//time : O(n) +//space : O(n) + +class Solution { + public int[] countBits(int n) { + int[] answer = new int[n + 1]; + + answer[0] = 0; + for(int i = 1; i <= n; i++) { + answer[i] = answer[i >> 1] + (i & 1); + } + + return answer; + } +} From 1836a8fd2203d64b2a39826fb32bbd95dfb29457 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Tue, 20 Aug 2024 21:31:00 +0900 Subject: [PATCH 3/5] Update f-exuan21.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주석 추가 --- counting-bits/f-exuan21.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/counting-bits/f-exuan21.java b/counting-bits/f-exuan21.java index 6357186b1..35ecac809 100644 --- a/counting-bits/f-exuan21.java +++ b/counting-bits/f-exuan21.java @@ -2,6 +2,9 @@ //space : O(n) class Solution { + + // f(n) = f(n >> 1) + (n & 1) + public int[] countBits(int n) { int[] answer = new int[n + 1]; From 7a7a020ab6292defa3b6b1bfafc573e98f6bd913 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Tue, 20 Aug 2024 21:41:45 +0900 Subject: [PATCH 4/5] Update f-euxan21.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 공간복잡도를 O(n) -> O(1) 로 로직 변경 --- valid-anagram/f-euxan21.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/valid-anagram/f-euxan21.java b/valid-anagram/f-euxan21.java index 87712651d..0e9a90493 100644 --- a/valid-anagram/f-euxan21.java +++ b/valid-anagram/f-euxan21.java @@ -1,19 +1,16 @@ // time : O(n) -// space : O(n) +// space : O(1) class Solution { public boolean isAnagram(String s, String t) { - char[] sToChar = s.toCharArray(); - char[] tToChar = t.toCharArray(); + + if(s.length() != t.length()) return false; int[] charCount = new int[26]; - for(char c : sToChar) { - charCount[c - 'a']++; - } - - for(char c : tToChar) { - charCount[c - 'a']--; + for(int i = 0; i < s.length(); i++) { + charCount[s.charAt(i) - 'a']++; + charCount[t.charAt(i) - 'a']--; } for(int i : charCount) { From bfdfbaad2cd0581a768ffc0192f3cc616f39f389 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Thu, 22 Aug 2024 00:10:17 +0900 Subject: [PATCH 5/5] Create f-exuan21.java construct binary tree solutions --- .../f-exuan21.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 construct-binary-tree-from-preorder-and-inorder-traversal/f-exuan21.java diff --git a/construct-binary-tree-from-preorder-and-inorder-traversal/f-exuan21.java b/construct-binary-tree-from-preorder-and-inorder-traversal/f-exuan21.java new file mode 100644 index 000000000..12be66629 --- /dev/null +++ b/construct-binary-tree-from-preorder-and-inorder-traversal/f-exuan21.java @@ -0,0 +1,50 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ + + // time : O(n) + // space : O(n) + // n은 트리 노드 수 + + class Solution { + + private int i = 0; + Map map = new HashMap<>(); + + public TreeNode buildTree(int[] preorder, int[] inorder) { + + for(int i = 0; i < inorder.length; i++) { + map.put(inorder[i], i); + } + + return build(preorder, inorder, 0, inorder.length); + + } + + private TreeNode build(int[] preorder, int[] inorder, int start, int end) { + if(i >= preorder.length || start >= end) { + return null; + } + + int value = preorder[i++]; + int index = map.get(value); + + TreeNode leftTreeNode = build(preorder, inorder, start, index); + TreeNode rightTreeNode = build(preorder, inorder, index+1, end); + + return new TreeNode(value, leftTreeNode, rightTreeNode); + } + +}