Skip to content

Commit 4cd867e

Browse files
authored
Merge pull request #2015 from youngDaLee/main
[YoungDaLee] WEEK 01 solutions
2 parents 21f9aa6 + e0383fb commit 4cd867e

File tree

5 files changed

+112
-0
lines changed

5 files changed

+112
-0
lines changed

contains-duplicate/youngDaLee.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package youngDaLee
2+
3+
func containsDuplicate(nums []int) bool {
4+
numMap := make(map[int]bool)
5+
for _, num := range nums {
6+
if _, exists := numMap[num]; exists {
7+
return true
8+
}
9+
numMap[num] = true
10+
}
11+
return false
12+
}

house-robber/youngDaLee.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package youngDaLee
2+
3+
func rob(nums []int) int {
4+
if len(nums) == 0 {
5+
return 0
6+
}
7+
if len(nums) == 1 {
8+
return nums[0]
9+
}
10+
11+
dp := make([]int, len(nums))
12+
dp[0] = nums[0]
13+
dp[1] = max(nums[0], nums[1])
14+
15+
for i := 2; i < len(nums); i++ {
16+
dp[i] = max(dp[i-1], dp[i-2]+nums[i])
17+
}
18+
19+
return dp[len(nums)-1]
20+
}
21+
22+
func max(a, b int) int {
23+
if a > b {
24+
return a
25+
}
26+
return b
27+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package youngDaLee
2+
3+
func longestConsecutive(nums []int) int {
4+
numSet := make(map[int]bool)
5+
for _, num := range nums {
6+
numSet[num] = true
7+
}
8+
9+
longestStreak := 0
10+
11+
for num := range numSet {
12+
if !numSet[num-1] {
13+
currentNum := num
14+
currentStreak := 1
15+
16+
for numSet[currentNum+1] {
17+
currentNum++
18+
currentStreak++
19+
}
20+
21+
if currentStreak > longestStreak {
22+
longestStreak = currentStreak
23+
}
24+
}
25+
}
26+
27+
return longestStreak
28+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package youngDaLee
2+
3+
import "sort"
4+
5+
func topKFrequent(nums []int, k int) []int {
6+
frequencyMap := make(map[int]int)
7+
for _, num := range nums {
8+
frequencyMap[num]++
9+
}
10+
11+
type freqPair struct {
12+
num int
13+
count int
14+
}
15+
16+
freqPairs := make([]freqPair, 0, len(frequencyMap))
17+
for num, count := range frequencyMap {
18+
freqPairs = append(freqPairs, freqPair{num, count})
19+
}
20+
21+
sort.Slice(freqPairs, func(i, j int) bool {
22+
return freqPairs[i].count > freqPairs[j].count
23+
})
24+
25+
result := make([]int, k)
26+
for i := 0; i < k; i++ {
27+
result[i] = freqPairs[i].num
28+
}
29+
30+
return result
31+
}

two-sum/youngDaLee.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package youngDaLee
2+
3+
func twoSum(nums []int, target int) []int {
4+
numMap := make(map[int]int)
5+
for i, num := range nums {
6+
sub := target - num
7+
if j, exists := numMap[sub]; exists {
8+
return []int{j, i}
9+
}
10+
numMap[num] = i
11+
}
12+
13+
return []int{}
14+
}

0 commit comments

Comments
 (0)