diff --git a/top-100-liked/56/leetcode_test.go b/top-100-liked/56/leetcode_test.go new file mode 100644 index 0000000..79bf93b --- /dev/null +++ b/top-100-liked/56/leetcode_test.go @@ -0,0 +1,34 @@ +package top100liked + +import ( + "fmt" + "testing" +) + +// https://leetcode.cn/problems/subsets/?envType=study-plan-v2&envId=top-100-liked + +func subsets(nums []int) [][]int { + res := [][]int{{}} + var helper func(nums []int, length int, start int, r []int) + helper = func(nums []int, length int, start int, r []int) { + if len(r) == length { + cp := make([]int, length) + copy(cp, r) + res = append(res, cp) + return + } + for i := start; i < len(nums); i++ { + r = append(r, nums[i]) + helper(nums, length, i+1, r) + r = r[:len(r)-1] + } + } + for i := range len(nums) { + helper(nums, i+1, 0, []int{}) + } + return res +} + +func Test(t *testing.T) { + fmt.Printf("%+v", subsets([]int{1, 2, 3})) +} diff --git a/top-100-liked/57/leetcode_test.go b/top-100-liked/57/leetcode_test.go new file mode 100644 index 0000000..deca425 --- /dev/null +++ b/top-100-liked/57/leetcode_test.go @@ -0,0 +1,44 @@ +package top100liked + +import ( + "fmt" + "testing" +) + +// https://leetcode.cn/problems/letter-combinations-of-a-phone-number?envType=study-plan-v2&envId=top-100-liked + +var m = map[byte][]byte{ + '2': []byte("abc"), + '3': []byte("def"), + '4': []byte("ghi"), + '5': []byte("jkl"), + '6': []byte("mno"), + '7': []byte("pqrs"), + '8': []byte("tuv"), + '9': []byte("wxyz"), +} + +func letterCombinations(digits string) []string { + res := []string{} + + var helper func(idx int, r []byte) + helper = func(idx int, r []byte) { + if idx == len(digits) { + res = append(res, string(r)) + return + } + for j := range m[digits[idx]] { + r = append(r, m[digits[idx]][j]) + helper(idx+1, r) + r = r[:len(r)-1] + } + } + + helper(0, []byte{}) + return res +} + +func Test(t *testing.T) { + fmt.Printf("%+v", letterCombinations("23")) + fmt.Printf("%+v", letterCombinations("2")) +}