Golang 使用两指针方法在数组中查找是否存在一对数字,它们的和等于给定的目标和

Golang 使用两指针方法在数组中查找是否存在一对数字,它们的和等于给定的目标和

在这篇Golang文章中,我们将使用迭代和优化迭代的方法来查找数组中是否存在一对数字,它们的和等于给定的目标和。数组是由相同数据类型的元素组成的集合,以连续的内存块排列,并且可以使用索引或下标进行访问。

使用迭代方法的两指针方法

在这种方法中,我们将使用迭代方法定义一个pairWithGivenSum()函数,该函数用于使用两指针方法查找数组中是否存在一对数字,它们的和等于给定的目标和。

步骤

  • 步骤1 − 首先,我们需要导入fmt包。

  • 步骤2 − 现在,创建一个pairWithGivenSum()函数,它接受一个整数数组和一个目标和值作为输入。这个函数将查找数组中是否存在一对数字,它们的和等于给定的目标和。

  • 步骤3 − 它使用两指针left和right来跟踪数组的起始和结束索引。

  • 步骤4 − 然后,通过比较指针处元素的和与目标和,将指针向内移动。

  • 步骤5 − 如果和小于目标和,则左指针向右移动。如果和大于目标和,则右指针向左移动。

  • 步骤6 − 如果存在一对元素的和等于目标和,则函数返回true;如果不存在这样的一对元素,则返回false。

  • 步骤7 − 开始主函数main()。在main()函数内部,初始化一个数组并提供整数目标和值。

  • 步骤8 − 现在,调用pairWithGivenSum()函数,并将数组和目标和作为参数传递给它。

  • 步骤9 − 此外,使用fmt.Println()函数打印出使用两指针方法查找数组中是否存在一对数字的结果。

示例

以下是使用迭代方法的两指针方法在Go语言中查找数组中是否存在一对数字,它们的和等于给定的目标和的程序。

package main

import "fmt"

func pairWithGivenSum(arr []int, targetSum int) bool {
   left, right := 0, len(arr)-1

   for left < right {
      sum := arr[left] + arr[right]
      if sum == targetSum {
         return true
      } else if sum < targetSum {
         left++
      } else {
         right--
      }
   }
   return false
}

func main() {
   arr := []int{10, 40, 30, 80, 50}
   targetSum := 70

   if pairWithGivenSum(arr, targetSum) {
      fmt.Println("There exists a pair of numbers in the array that add up to sum", targetSum)
   } else {
      fmt.Println("There does not exist a pair of numbers in the array that add up to sum", targetSum)
   }
}

输出

There exists a pair of numbers in the array that add up to sum 70

使用优化的迭代方法和双指针方法

在该方法中,我们将使用优化的迭代方法来定义pairWithGivenSum()函数,该函数使用双指针方法在数组中查找是否存在一对数字,它们的和为给定的目标和。

步骤

  • 步骤1 - 首先,我们需要导入fmt包。

  • 步骤2 - 现在,创建一个pairWithGivenSum()函数,它接受一个整数数组和一个目标和值作为输入。该函数将查找数组中是否存在一对数字的和等于给定的目标和,并返回布尔值。

  • 步骤3 - 它在数组的起始和结尾处初始化两个指针left和right。

  • 步骤4 - 然后,将左右指针处的元素之和与目标和进行比较。如果和小于目标和,则增加左指针。如果和大于目标和,则减小右指针。

  • 步骤5 - 函数继续运行,指示不存在一对元素的总和等于目标和,或者直到找到一对元素的总和等于目标和并返回true。

  • 步骤6 - 开始main()函数。在main()函数内部,初始化一个数组并提供整数目标和值。

  • 步骤7 - 现在,调用pairWithGivenSum()函数并将数组和和作为参数传递给它。

  • 步骤8 - 接下来,使用fmt.Println()函数打印存在一对数字的情况,这些数字在数组中的和等于给定的目标和,使用双指针方法。

示例

以下是使用优化的迭代方法和双指针方法在Go语言中查找数组中是否存在一对数字,它们的和等于给定的目标和的程序。

package main

import "fmt"

func pairWithGivenSum(arr []int, targetSum int) bool {
   var left, right int
   for left < right {
      if arr[left]+arr[right] == targetSum {
         return true
      } else if arr[left]+arr[right] < targetSum {
         left++
      } else {
         right--
      }
   }
   return false
}

func main() {
   arr := []int{10, 40, 30, 80, 50}
   targetSum := 7

   if pairWithGivenSum(arr, targetSum) {
      fmt.Printf("There exists a pair of numbers in the array that add up to %d\n", targetSum)
   } else {
      fmt.Printf("There does not exist a pair of numbers in the array that add up to %d\n", targetSum)
   }
}

输出

There does not exists a pair of numbers in the array that add up to 7

结论

我们已成功编译并执行了一个Go语言程序,使用双指针方法和迭代优化方法,在给定的目标和中寻找数组中是否存在一对数字相加。我们提供了两个示例。在第一个示例中,我们使用了迭代方法,而在第二个示例中,我们使用了优化的迭代方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程