167. 两数之和 II - 输入有序数组——双指针
作者:
含泪若笑 | 来源:发表于
2020-07-20 17:09 被阅读0次
每日一题里面的,就从这个开始啦
我只能想到等方法,遍历两遍那种。看了答案发现双指针的方法时间复杂度为N,然后就用这个了。
方法就是两个指针一个从头开始,一个从尾开始,相加结果如果大于target,则尾减一,小于则头减一,当然使用这个方法也有前提就是题目里面说的不可以使用相同的元素,还有就是数组有序,这个很重要。
原理的话有一个帖子说的比较详细,为什么两个指针可以将时间复杂度变成N呢,是因为一次可以消掉一行,你想如果最后一个和第一个相加大于目标,因为有序,没有比第一个更小的了,所以不需要用1,2,3分别去加了,故减少了一行。讲的挺好。
代码在这里:
https://github.com/hanleirx/LeetCode/blob/master/167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84
本文标题:167. 两数之和 II - 输入有序数组——双指针
本文链接:https://www.haomeiwen.com/subject/xwqykktx.html
网友评论