教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang_算法: 数组09-两数之和

golang_算法: 数组09-两数之和

发布时间:2021-04-24   编辑:jiaochengji.com
教程集为您提供golang,算法: 数组09-两数之和等资源,欢迎您收藏本站,我们将为您提供最新的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冒泡排序算法

[关闭]
~ ~