diff --git a/climbing-stairs/youngDaLee.go b/climbing-stairs/youngDaLee.go new file mode 100644 index 0000000000..4a94e4836c --- /dev/null +++ b/climbing-stairs/youngDaLee.go @@ -0,0 +1,34 @@ +package youngDaLee + +func climbStairs(n int) int { + if n <= 2 { + return n + } + + dp := make([]int, n+1) + dp[1] = 1 + dp[2] = 2 + + for i := 3; i <= n; i++ { + dp[i] = dp[i-1] + dp[i-2] + } + return dp[n] +} + +/* +Limit Exceeded +func climbStairs(n int) int { + return dfs(0, n) +} + +func dfs(now, n int) int { + if now > n { + return 0 + } + if now == n { + return 1 + } + + return dfs(now+1, n) + dfs(now+2, n) +} +*/ diff --git a/product-of-array-except-self/youngDaLee.go b/product-of-array-except-self/youngDaLee.go new file mode 100644 index 0000000000..30f640bb8b --- /dev/null +++ b/product-of-array-except-self/youngDaLee.go @@ -0,0 +1,21 @@ +package youngDaLee + +func productExceptSelf(nums []int) []int { + n := len(nums) + result := make([]int, n) + + // Calculate left products + leftProduct := 1 + for i := 0; i < n; i++ { + result[i] = leftProduct + leftProduct *= nums[i] + } + + // Calculate right products and combine with left products + rightProduct := 1 + for i := n - 1; i >= 0; i-- { + result[i] *= rightProduct + rightProduct *= nums[i] + } + return result +} diff --git a/valid-anagram/youngDaLee.go b/valid-anagram/youngDaLee.go new file mode 100644 index 0000000000..2f114de1c7 --- /dev/null +++ b/valid-anagram/youngDaLee.go @@ -0,0 +1,44 @@ +package youngDaLee + +import "strings" + +func isAnagram(s string, t string) bool { + if len(s) != len(t) { + return false + } + + if s == t { + return true + } + + sDict := make(map[string]int) + sList := strings.Split(s, "") + for _, data := range sList { + if num, ok := sDict[data]; ok { + sDict[data] = num + 1 + } else { + sDict[data] = 1 + } + } + + tList := strings.Split(t, "") + for _, data := range tList { + if num, ok := sDict[data]; ok { + sDict[data] = num - 1 + } else { + return false + } + + if sDict[data] < 0 { + return false + } + } + + for _, num := range sDict { + if num != 0 { + return false + } + } + + return true +}