add new solutions
This commit is contained in:
parent
e1b702657c
commit
59b71480d4
11 changed files with 343 additions and 0 deletions
22
solutions/0/q1/solution.go
Normal file
22
solutions/0/q1/solution.go
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
package q1
|
||||
|
||||
import "slices"
|
||||
|
||||
func twoSum(nums []int, target int) []int {
|
||||
pointers := make([]int, len(nums))
|
||||
for i := range pointers {
|
||||
pointers[i] = i
|
||||
}
|
||||
|
||||
slices.SortFunc(pointers, func(a, b int) int { return nums[a] - nums[b] })
|
||||
for l, r := 0, len(pointers)-1; l < r; l++ {
|
||||
for ; l < r-1 && nums[pointers[l]]+nums[pointers[r]] > target; r-- {
|
||||
}
|
||||
if nums[pointers[l]]+nums[pointers[r]] == target {
|
||||
return []int{pointers[l], pointers[r]}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var _ = twoSum
|
||||
37
solutions/0/q13/solution.go
Normal file
37
solutions/0/q13/solution.go
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package q13
|
||||
|
||||
func lookup(b byte) int {
|
||||
switch b {
|
||||
case 'I':
|
||||
return 1
|
||||
case 'V':
|
||||
return 5
|
||||
case 'X':
|
||||
return 10
|
||||
case 'L':
|
||||
return 50
|
||||
case 'C':
|
||||
return 100
|
||||
case 'D':
|
||||
return 500
|
||||
case 'M':
|
||||
return 1000
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func romanToInt(s string) int {
|
||||
num := 0
|
||||
prev := 0
|
||||
for i := range len(s) {
|
||||
cur := lookup(s[i])
|
||||
num += cur
|
||||
if prev < cur {
|
||||
num -= prev + prev
|
||||
}
|
||||
prev = cur
|
||||
}
|
||||
return num
|
||||
}
|
||||
|
||||
var _ = romanToInt
|
||||
36
solutions/0/q21/solution.go
Normal file
36
solutions/0/q21/solution.go
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
package q21
|
||||
|
||||
type ListNode struct {
|
||||
Val int
|
||||
Next *ListNode
|
||||
}
|
||||
|
||||
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
|
||||
root := &ListNode{}
|
||||
cur := root
|
||||
|
||||
for {
|
||||
if list1 == nil && list2 == nil {
|
||||
return root.Next
|
||||
}
|
||||
if list1 == nil {
|
||||
cur.Next = list2
|
||||
return root.Next
|
||||
} else if list2 == nil {
|
||||
cur.Next = list1
|
||||
return root.Next
|
||||
} else if list1.Val < list2.Val {
|
||||
cur.Next = list1
|
||||
cur = cur.Next
|
||||
list1 = list1.Next
|
||||
cur.Next = nil
|
||||
} else {
|
||||
cur.Next = list2
|
||||
cur = cur.Next
|
||||
list2 = list2.Next
|
||||
cur.Next = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _ = mergeTwoLists
|
||||
Loading…
Add table
Add a link
Reference in a new issue