add new solutions

This commit is contained in:
Yiyang Kang 2025-12-28 17:07:06 +09:00 committed by kanna5
parent e1b702657c
commit 59b71480d4
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
11 changed files with 343 additions and 0 deletions

View 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

View 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

View 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