使用两个指针方法在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("存在一对数字在数组中加起来等于", targetSum)
} else {
fmt.Println("不存在一对数字在数组中加起来等于", targetSum)
}
}
输出
存在一对数字在数组中加起来等于 70
使用两个指针优化迭代方法
在此方法中,我们将使用优化迭代方法定义pairWithGivenSum()函数,该函数用于使用两个指针方法查找数组中是否存在一对数字,它们加起来等于给定的目标和。
算法
- 第一步 − 首先,我们需要导入 fmt 包。
-
第二步 − 现在,创建一个 pairWithGivenSum() 函数,该函数将整数数组和目标和值作为输入。该函数将查找是否存在一对加起来等于给定目标和的数字,并返回布尔值。
-
第三步 − 它在数组的开头和结尾初始化两个指针左指针和右指针。
-
第四步 − 然后,将左指针和右指针的元素之和与目标和进行比较。如果总和小于目标和,则将左指针增加。如果总和大于目标和,则将右指针减小。
-
第五步 − 该函数继续指示数组中不存在添加到目标和的元素的一对,直到找到添加到目标和的元素的一对并返回 true。
-
第六步 − 启动 main() 函数。在 main() 函数内部,初始化一个数组并提供整数目标和值。
-
第七步 − 现在,调用 pairWithGivenSum() 函数,并将数组和目标和作为参数传递给它。
-
第八步 − 进一步,使用 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("数组中存在加起来等于 %d 的一对数字\n", targetSum)
} else {
fmt.Printf("数组中不存在加起来等于 %d 的一对数字\n", targetSum)
}
}
输出
数组中不存在加起来等于 7 的一对数字
结论
我们已成功编译并执行了一个 Go 语言程序,使用两个指针方法(迭代和优化迭代方法)查找是否存在一对数字在数组中相加等于给定目标和,以及两个示例。在第一个示例中,我们使用了迭代方法,在第二个示例中,我们使用了优化迭代方法。