当前位置: 首页 > 后端技术 > Python

LeetCode167.两数之和II-输入有序数组-蟒蛇

时间:2023-03-26 10:50:42 Python

167。两个数字的总和II-输入一个有序数组two-sum-ii-input-array-is-sorted题目目标给定一个已按升序排序的排序数组,找到两个数字,使它们的总和等于目标数字。该函数应该返回两个索引值index1和index2,其中index1必须小于index2。解释:返回的索引值(index1和index2)不是从零开始的。您可以假设每个输入对应一个唯一的答案,并且您不能重复使用相同的元素。示例:输入:numbers=[2,7,11,15],target=9输出:[1,2]解释:2和7的和等于目标数9。所以index1=1,index2=2.解题思路:双指针先审题。首先,问题中给出的数组是有序的。因为这个前提,我们可以考虑使用双指针的思想来缩小范围,获取答案。这里,首先要注意题中给出的要求:返回的下标值不是从0开始,而是从1开始。该题有唯一解,所以可以直接返回答案。下面说说算法的具体思路:定义双指针left和right,分别指向有序数组的首尾;将两个指针对应的数相加,设为two_sum,与target比较:iftwo_sum==target,return[left+1,right+1](因为返回下标值从1开始)iftwo_sum>target,右指针向前移动;如果two_sumList[int]:length=len(numbers)#定义双指针,分别指向数组left的首尾=0right=length-1whilelefttarget:right-=1#两个数之和小于target,向左移动指针增加两个数andelse:left+=1returnNone达到结果。欢迎关注公众号【图书收藏】