diff --git a/climbing-stairs/sm9171.java b/climbing-stairs/sm9171.java new file mode 100644 index 000000000..e0c83f206 --- /dev/null +++ b/climbing-stairs/sm9171.java @@ -0,0 +1,16 @@ +class Solution { + public int climbStairs(int n) { + int[] memo = new int[n+1]; + return recur(n, memo); + } + + public static int recur(int n, int[] memo) { + if (n < 0) return 0; + if (n == 0) return 1; + + if (memo[n] > 0) return memo[n]; + + memo[n] = recur(n - 1, memo) + recur(n - 2, memo); + return memo[n]; + } +} diff --git a/product-of-array-except-self/sm9171.java b/product-of-array-except-self/sm9171.java new file mode 100644 index 000000000..da755cbaa --- /dev/null +++ b/product-of-array-except-self/sm9171.java @@ -0,0 +1,18 @@ +class Solution { + public int[] productExceptSelf(int[] nums) { + int[] res = new int[nums.length]; + + res[0] = 1; + for (int i = 1; i < nums.length; i++) { + res[i] = res[i - 1] * nums[i - 1]; + } + + int acc = 1; + for (int i = nums.length - 2; i >= 0; i--) { + acc *= nums[i + 1]; + res[i] *= acc; + } + + return res; + } +} diff --git a/valid-anagram/sm9171.java b/valid-anagram/sm9171.java new file mode 100644 index 000000000..b44cf14a1 --- /dev/null +++ b/valid-anagram/sm9171.java @@ -0,0 +1,24 @@ +class Solution { + public boolean isAnagram(String s, String t) { + if (s.length() != t.length()) { + return false; + } + + HashMap map = new HashMap<>(); + char[] originString = s.toCharArray(); + for (int i = 0; i < originString.length; i++) { + Integer count = map.getOrDefault(originString[i], 0); + map.put(originString[i], count + 1); + } + + char[] targetString = t.toCharArray(); + for (int i = 0; i < targetString.length; i++) { + Integer count = map.get(targetString[i]); + if (count == null || count == 0) { + return false; + } + map.put(targetString[i], count - 1); + } + return true; + } +}