题目
在数组中找到 2 个数之和等于给定值的数字,结果返回 2 个数字在数组中的下标。
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
go
1 package main
2
3 import "fmt"
4
5 func main() {
6 // fmt.Println("vim-go")
7 nums := []int{5, 11, 7, 2}
8 target := 9
9 res := twoSum(nums, target)
10 fmt.Println(res)
11 }
12
13 func twoSum(nums []int, target int) []int {
14 m := make(map[int]int)
15 for i := 0; i < len(nums); i++ {
16 another := target - nums[i]
17 fmt.Println(m)
18 if _, ok := m[another]; ok {
19 return []int{m[another], i}
20 }
21 m[nums[i]] = i
22 }
23 return nil
24 }
PHP
1 <?php
2 $num = [2,5,7,6];
3 $target = 12;
4 $res = twoNum($num, $target);
5 var_dump($res);
6 function twoNum($num, $target){
7 $m = [];
8 foreach($num as $index=>$value){
9 $another = $target-$value;
10 if(array_key_exists($another, $m)){
11 return [$m[$another], $index];
12 }
13 $m[$value] = $index;
14 }
15 return null;
16 }