Skip to content

Commit 2fccf2b

Browse files
authored
Merge pull request #2072 from youngDaLee/main
[youngDaLee] Week 02 solutions
2 parents c3f1add + dbba78c commit 2fccf2b

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

3sum/youngDaLee.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package youngDaLee
2+
3+
import (
4+
"fmt"
5+
"slices"
6+
)
7+
8+
func threeSum(nums []int) [][]int {
9+
// sort nums
10+
slices.Sort(nums)
11+
12+
// unique-ify nums
13+
uniqueKeys := make(map[string]bool)
14+
15+
var result [][]int
16+
left := 0
17+
for left < len(nums)-2 {
18+
// init pivot, right
19+
pivot := left + 1
20+
right := len(nums) - 1
21+
22+
for pivot < right {
23+
sum := nums[left] + nums[pivot] + nums[right]
24+
unikeyKey := fmt.Sprintf("%d%d%d", nums[left], nums[pivot], nums[right])
25+
if sum == 0 {
26+
if _, ok := uniqueKeys[unikeyKey]; !ok {
27+
uniqueKeys[unikeyKey] = true
28+
result = append(result, []int{nums[left], nums[pivot], nums[right]})
29+
}
30+
for pivot < right-1 && nums[pivot] == nums[pivot+1] {
31+
pivot += 1
32+
}
33+
for pivot < right-1 && nums[right] == nums[right-1] {
34+
right -= 1
35+
}
36+
pivot += 1
37+
right -= 1
38+
} else if sum < 0 {
39+
pivot += 1
40+
} else if sum > 0 {
41+
right -= 1
42+
}
43+
}
44+
45+
left += 1
46+
for left < len(nums)-2 && nums[left] == nums[left-1] {
47+
left += 1
48+
}
49+
}
50+
return result
51+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package youngDaLee
2+
3+
import "math"
4+
5+
type TreeNode struct {
6+
Val int
7+
Left *TreeNode
8+
Right *TreeNode
9+
}
10+
11+
func isValidBST(root *TreeNode) bool {
12+
return dfs(root, math.MinInt, math.MaxInt)
13+
}
14+
15+
func dfs(node *TreeNode, min, max int) bool {
16+
if node == nil {
17+
return true
18+
}
19+
if (min < node.Val && node.Val < max) == false {
20+
return false
21+
}
22+
23+
return dfs(node.Left, min, node.Val) && dfs(node.Right, node.Val, max)
24+
}

0 commit comments

Comments
 (0)