Skip to content

Commit

Permalink
Merge pull request #338 from TonyKim9401/main
Browse files Browse the repository at this point in the history
[TONY] WEEK 02 Solutions
  • Loading branch information
TonyKim9401 authored Aug 24, 2024
2 parents a125b00 + 6ce47d8 commit a85fe39
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Solution {
private int i, p;
public TreeNode buildTree(int[] preorder, int[] inorder) {
// Time complexity: O(n)
// Space complexity: O(n)
return builder(preorder, inorder, Integer.MIN_VALUE);
}

private TreeNode builder(int[] preorder, int[] inorder, int stop) {
if (p >= preorder.length) return null;
if (inorder[i] == stop) {
i += 1;
return null;
}

TreeNode node = new TreeNode(preorder[p]);
p += 1;

node.left = builder(preorder, inorder, node.val);
node.right = builder(preorder, inorder, stop);
return node;
}
}
10 changes: 10 additions & 0 deletions counting-bits/TonyKim9401.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution {
public int[] countBits(int n) {
// time complexity: O(n)
// space complexity: O(n)
int[] output = new int[n+1];
int num = 0;
while (num <= n) output[num] = Integer.bitCount(num++);
return output;
}
}
21 changes: 21 additions & 0 deletions decode-ways/TonyKim9401.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
class Solution {
public int numDecodings(String s) {
// time complexity: O(n)
// space complexity: O(n)
if (s.charAt(0) == '0') return 0;

int[] dp = new int[s.length() + 1];
dp[0] = 1;
dp[1] = 1;

for (int i = 2; i <= s.length(); i++) {
int oneDigit = Integer.parseInt(s.substring(i-1, i));
int twoDigits = Integer.parseInt(s.substring(i-2, i));

if (oneDigit > 0 && oneDigit < 10) dp[i] += dp[i-1];
if (twoDigits >= 10 && twoDigits <= 26) dp[i] += dp[i-2];
}

return dp[s.length()];
}
}
32 changes: 32 additions & 0 deletions encode-and-decode-strings/TonyKim9401.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
public class Solution {
/*
* @param strs: a list of strings
* @return: encodes a list of strings to a single string.
*/
public String encode(List<String> strs) {
// write your code here
StringBuilder sb = new StringBuilder();
for (String str : strs) {
sb.append(str.length()).append("#").append(str);
}
return sb.toString();
}

/*
* @param str: A string
* @return: decodes a single string to a list of strings
*/
public List<String> decode(String str) {
// write your code here
List<String> output = new ArrayList<>();
int i = 0;
while (i < str.length()) {
int idx = str.indexOf('#', i);
int length = Integer.parseInt(str.substring(i, idx));
String s = str.substring(idx + 1, idx + 1 + length);
output.add(s);
i = idx + 1 + length;
}
return output;
}
}
15 changes: 15 additions & 0 deletions valid-anagram/TonyKim9401.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class Solution {
public boolean isAnagram(String s, String t) {
// time complexity: O(n log n)
// space complexity: O(n)
if (s.length() != t.length()) return false;

char[] sArr = s.toCharArray();
char[] tArr = t.toCharArray();

Arrays.sort(sArr);
Arrays.sort(tArr);

return Arrays.equals(sArr, tArr);
}
}

0 comments on commit a85fe39

Please sign in to comment.