Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions contains-duplicate/youngDaLee.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package youngDaLee

func containsDuplicate(nums []int) bool {
numMap := make(map[int]bool)
for _, num := range nums {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

golang을 잘 모르지만 직관적으로 확실하게 이해할 수 있는 코드인 것 같아요!

if _, exists := numMap[num]; exists {
return true
}
numMap[num] = true
}
return false
}
27 changes: 27 additions & 0 deletions house-robber/youngDaLee.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package youngDaLee

func rob(nums []int) int {
if len(nums) == 0 {
return 0
}
if len(nums) == 1 {
return nums[0]
}

dp := make([]int, len(nums))
dp[0] = nums[0]
dp[1] = max(nums[0], nums[1])

for i := 2; i < len(nums); i++ {
dp[i] = max(dp[i-1], dp[i-2]+nums[i])
}

return dp[len(nums)-1]
}

func max(a, b int) int {
if a > b {
return a
}
return b
}
28 changes: 28 additions & 0 deletions longest-consecutive-sequence/youngDaLee.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package youngDaLee

func longestConsecutive(nums []int) int {
numSet := make(map[int]bool)
for _, num := range nums {
numSet[num] = true
}

longestStreak := 0

for num := range numSet {
if !numSet[num-1] {
currentNum := num
currentStreak := 1

for numSet[currentNum+1] {
currentNum++
currentStreak++
}

if currentStreak > longestStreak {
longestStreak = currentStreak
}
}
}

return longestStreak
}
31 changes: 31 additions & 0 deletions top-k-frequent-elements/youngDaLee.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package youngDaLee

import "sort"

func topKFrequent(nums []int, k int) []int {
frequencyMap := make(map[int]int)
for _, num := range nums {
frequencyMap[num]++
}

type freqPair struct {
num int
count int
}

freqPairs := make([]freqPair, 0, len(frequencyMap))
for num, count := range frequencyMap {
freqPairs = append(freqPairs, freqPair{num, count})
}

sort.Slice(freqPairs, func(i, j int) bool {
return freqPairs[i].count > freqPairs[j].count
})

result := make([]int, k)
for i := 0; i < k; i++ {
result[i] = freqPairs[i].num
}

return result
}
14 changes: 14 additions & 0 deletions two-sum/youngDaLee.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package youngDaLee

func twoSum(nums []int, target int) []int {
numMap := make(map[int]int)
for i, num := range nums {
sub := target - num
if j, exists := numMap[sub]; exists {
return []int{j, i}
}
numMap[num] = i
}

return []int{}
}