golang_算法: 数组09-两数之和
这个很简单,看了下其它用map实现的方法,略繁琐,暂不考虑----2019.3.4
添加使用map的方法
执行用时:4 ms, 在所有 Go 提交中击败了96.95%的用户
内存消耗:3.9 MB, 在所有 Go 提交中击败了6.79%的用户----2020.09.14
package main
import "fmt"
func twoSum(nums []int, target int) []int {
ints := make([]int, 0)
flag := false
for i := 0; i < len(nums)-1; i {
for j := i 1; j < len(nums); j {
//fmt.Printf("i:%d, j:%d\n", i, j)
if nums[i] nums[j] == target {
ints = append(ints, i, j)
flag = true
break
}
}
if flag { // 如果查到结果,不再做无谓的循环
break
}
}
return ints
}
// O(2n)
func twoSum2(nums []int, target int) []int {
ints := make([]int, 0)
m := make(map[int]int)
for i := 0; i < len(nums); i {
m[nums[i]] = i
}
fmt.Println(m)
for i := 0; i < len(nums); i {
fmt.Println("i:", i)
_, ok := m[target-nums[i]]
if ok && m[target-nums[i]] != i { // 需要判断target-nums[i]后的值和nums[i]相等的情况
ints = append(ints, i, m[target-nums[i]])
break
}
}
return ints
}
func main() {
nums := []int{3,2,4}
t := 6
twoSum(nums,t)
}
Output:
[1 2]
到此这篇关于“golang_算法: 数组09-两数之和”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
golang_算法: 数组09-两数之和
golang_算法: 插入排序算法
golang_算法: 选择排序算法
PHP数组合并中 运算符和array_merge()之间有什么区别?
php数组操作方法大全
C语言内存管理 为什么难检查数组访问越界
JavaScript算法题之–查找不同顺序排列的字符串
PHP如何计算数组中元素的个数?
PHP如何计算多个数组间的交集?(代码示例)
JavaScript冒泡排序算法