22 lines
487 B
Go
22 lines
487 B
Go
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
|