167.go 609 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func twoSumOld(numbers []int, target int) []int {
  6. for i := 0; i < len(numbers)-1; i++ {
  7. for j := i + 1; j < len(numbers); j++ {
  8. if numbers[i]+numbers[j] == target {
  9. return []int{i + 1, j + 1}
  10. }
  11. }
  12. }
  13. return nil
  14. }
  15. func twoSum(numbers []int, target int) []int {
  16. left, right := 0, len(numbers)-1
  17. for left != right {
  18. sum := numbers[left] + numbers[right]
  19. if sum < target {
  20. left++
  21. } else if sum > target {
  22. right--
  23. } else {
  24. return []int{left + 1, right + 1}
  25. }
  26. }
  27. return nil
  28. }
  29. func main() {
  30. arr := []int{-1, 0}
  31. fmt.Println(twoSum(arr, -1))
  32. }