两数之和(升序整数数组)-基于Go

两数之和(升序整数数组)-基于Go,第1张

概述给定一个升序整数数组numbers,从数组中找出两个数满足:两数之和等于目标数target,且两个数不能是同一个数,假设每个输入只对应唯一的答案,不能重复使用同一个元素(下标不能相同)。返回两数的下标。暴力破解,O(n2)map打标记,O(n),但是空间复杂度也为O(n)二分查找(对于每一个x,找targe

给定一个升序的整数数组numbers,从数组中找出两个数满足: 两数之和等于目标数target,且两个数不能是同一个数, 假设每个输入只对应唯一的答案,不能重复使用同一个元素(下标不能相同)。返回两数的下标。

暴力破解,O(n2)map打标记,O(n),但是空间复杂度也为O(n)二分查找(对于每一个x,找target-x是否在数组中),O(nlogn)
func solution(nums []int, target int)(int, int){	var low = 0	var high = len(nums)-1	for i:=0;i<len(nums);i++{		// low为其中的一个默认解		low = i		for low<high{			mID := (high+low)/2			if nums[mID] == target-nums[i]{				return i, mID			}else if nums[mID]>target-nums[i]{				high = mID-1			}else{				low = mID+1			}		}	}	return -1,-1}
双指针(最优)
func solution2(nums []int, target int)(int, int){	var low = 0	var high = len(nums)-1	for low<high{		switch sum:=nums[low]+nums[high];{		case sum==target:			return low, high		case sum<target://小了说明low小			low++		default://大了说明high大			high--		}	}	return -1, -1}
总结

以上是内存溢出为你收集整理的两数之和(升序整数数组)-基于Go全部内容,希望文章能够帮你解决两数之和(升序整数数组)-基于Go所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存