Leetcode #167 Two Sum II
题目跟上一篇的Two Sum是一样的,差别在array是经排序的。
Two Pointer是一种演算法技巧,大家来体验一下它的巧妙之处。
ex: array: [2,7,11,15] target: 18
先建立两个指标,一个放在前面(head),一个放在後面(tail)。
2+15 = 17,17比18小
我们把head的index +1,因为这是经过排序的,所以head的下一个一定比较大
7 + 15 = 21,21比18大
因为加总比目标数大,所以把tail--,理由同上tail-1的值一定比目前的小,
7+11 = 18 找到了
完整程序:
func twoSum(arr []int, target int) []int {
headIndex := 0
tailIndex := len(arr) - 1
for headIndex < tailIndex{
sum := arr[headIndex] + arr[tailIndex]
if sum == target {
return []int{headIndex + 1, tailIndex + 1}
}
if sum > target {
tailIndex--
} else {
headIndex++
}
}
return []int{}
}
这个技巧还可以用来做array、字串的反转等等
在leetcode有满多题目会用到这算法。
明天会介绍另外一种算法Silde window~
byebye!
稻穗问题 夕阳西下,麦田沐浴在余晖的彩霞之中。片片的麦田在微风里泛着金浪,金浪的尾端旁有一道崎岖的小...
Agenda 资安宣言 自我介绍与参赛动机 适合阅读本系列文章的对象 本系列文章大纲 目标与展望 好...
今天我们来讲一下如何使用Parrot Security的hping3来扫描网路 首先登入Parrot...
前言 Tableau Desktop 版本更新非常快速,平均一季会推出一个新版本,每个版本之间在介面...
很久以前就想自己建个drone来实现CI/CD 原因是在公司里面通常都已经建好了,不然就是有MIS/...