From 4d4dc12aa6549b20fa6faac13da72933152b4fbc Mon Sep 17 00:00:00 2001 From: youngDaLee Date: Sat, 22 Nov 2025 09:21:10 +0900 Subject: [PATCH 1/3] add solution for 3sum problem --- 3sum/youngDaLee.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 3sum/youngDaLee.go diff --git a/3sum/youngDaLee.go b/3sum/youngDaLee.go new file mode 100644 index 0000000000..e69de29bb2 From dfbc3312f1e198f4c7a421950bea5649dbe29faa Mon Sep 17 00:00:00 2001 From: youngDaLee Date: Sat, 22 Nov 2025 11:10:50 +0900 Subject: [PATCH 2/3] add solution for three sum problem --- 3sum/youngDaLee.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/3sum/youngDaLee.go b/3sum/youngDaLee.go index e69de29bb2..ee83eed24c 100644 --- a/3sum/youngDaLee.go +++ b/3sum/youngDaLee.go @@ -0,0 +1,51 @@ +package youngDaLee + +import ( + "fmt" + "slices" +) + +func threeSum(nums []int) [][]int { + // sort nums + slices.Sort(nums) + + // unique-ify nums + uniqueKeys := make(map[string]bool) + + var result [][]int + left := 0 + for left < len(nums)-2 { + // init pivot, right + pivot := left + 1 + right := len(nums) - 1 + + for pivot < right { + sum := nums[left] + nums[pivot] + nums[right] + unikeyKey := fmt.Sprintf("%d%d%d", nums[left], nums[pivot], nums[right]) + if sum == 0 { + if _, ok := uniqueKeys[unikeyKey]; !ok { + uniqueKeys[unikeyKey] = true + result = append(result, []int{nums[left], nums[pivot], nums[right]}) + } + for pivot < right-1 && nums[pivot] == nums[pivot+1] { + pivot += 1 + } + for pivot < right-1 && nums[right] == nums[right-1] { + right -= 1 + } + pivot += 1 + right -= 1 + } else if sum < 0 { + pivot += 1 + } else if sum > 0 { + right -= 1 + } + } + + left += 1 + for left < len(nums)-2 && nums[left] == nums[left-1] { + left += 1 + } + } + return result +} From dbba78cf7f5cae929bd078ba82f77779c66d5101 Mon Sep 17 00:00:00 2001 From: youngDaLee Date: Sat, 22 Nov 2025 11:31:52 +0900 Subject: [PATCH 3/3] add solution for validate binary search tree --- validate-binary-search-tree/youngDaLee.go | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 validate-binary-search-tree/youngDaLee.go diff --git a/validate-binary-search-tree/youngDaLee.go b/validate-binary-search-tree/youngDaLee.go new file mode 100644 index 0000000000..fc1117e5d6 --- /dev/null +++ b/validate-binary-search-tree/youngDaLee.go @@ -0,0 +1,24 @@ +package youngDaLee + +import "math" + +type TreeNode struct { + Val int + Left *TreeNode + Right *TreeNode +} + +func isValidBST(root *TreeNode) bool { + return dfs(root, math.MinInt, math.MaxInt) +} + +func dfs(node *TreeNode, min, max int) bool { + if node == nil { + return true + } + if (min < node.Val && node.Val < max) == false { + return false + } + + return dfs(node.Left, min, node.Val) && dfs(node.Right, node.Val, max) +}