“拼尽全力,逼自己优秀一把,青春已所剩不多。”
题目:找出数组中和为给定值的两个元素的下标,例如数组[1,3,5,8,7],找出两个元素之和等于8的下标分别是(0,4)和(1,2)
PS:因楼主现在自学Go,所以很多Go的小demo习惯上先用php实现一遍,再用Go语言练习一遍,加深自己的印象。同时也比较php和Go的些许区别
PHP实现该算法
—
$arr = [1,3,5,8,7];
$sum = 8;
$key = [];
for ($i =0; $i< count($arr); $i++) {
for ($j = $i+1; $j < count($arr); $j++) {
if ($arr[$i] + $arr[$j] == $sum) {
$key[] = $i.','.$j;
}
}
}
var_dump($key);
结果
代码是自上而下顺序执行,其实大家也可以封装成一个函数。在以后做项目的时候,尽量使用面向对象的习惯编写代码,如
Go 语言实现该算法
—
算法1:直接把php的写法转换成Go的写法
结果:go run demo.go 后返回结果也是 (0,4) (1,2)。其实这样做就是直接把php实现该算法的代码直接转成Go写法。所以我们必须要掌握Go语言的写法。
算法2:优化下源代码并封装成一个函数
结果返回
(0,4)
(1,2)
领取专属 10元无门槛券
私享最新 技术干货