Go-两数之和

Go-两数之和

给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 的那 两个整数,并返回它们的数组下标

方法一

分析:(暴力法)

先用nums里的第一个数 去分别和后面的几个数相加,看结果是否等于target,如果没有,继续去拿nums里的第二个数 去分别和这个数的后面的几个数相加,看结果是否等于target,如果没有,就继续第三个…直到两数相加等于target时,分别取这两个数的下标返回。

方法二

分析:

用target - nums[i]得到两个数的差值,如果这个差值nums里有,就返回这两个数的下标。

package main

import "fmt"

// 给定一个整数数组 nums 和一个整数目标值 target
// 请你在该数组中找出 和为目标值 的那 两个整数,并返回它们的数组下标
func main() {
	target := 9
	nums := [4]int{11, 12, 7, 2}
	r1 := f1(nums, target)
	fmt.Println(r1)
	r2 := f2(nums, target)
	fmt.Println(r2)
}
// 方法一
// 暴力法
func f1(nums [4]int, target int) [2]int {
	result := [2]int{}
	for i := 0; i < len(nums); i++ {
		for j := i + 1; j < len(nums); j++ {
			sum := nums[i] + nums[j]
			if sum == target {
				result[0] = i
				result[1] = j
			}
		}
	}
	return result
}
// 方法二
// target-nums[i]的值如果nums里有,就返回这两个值的下标
func f2(nums [4]int, target int) [2]int {
	result := [2]int{}
	for j := 0; j < len(nums); j++ { //先循环计算差值:target-nums[j]
		for i := 0; i < len(nums); i++ { //循环找与这个差值相同的值
			if nums[i] == target-nums[j] {
				result[0] = i
				result[1] = j
			}
		}
	}
	return result
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值