LeetCode 167. 两数之和 II - 输入有序数组 | Python
2021-04-13 03:28
标签:图解 targe enter 算法实现 lazy turn 开始 while 来源 题目来源:力扣(LeetCode) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 说明: 示例: 思路:双指针 先审题,首先题目中所给的数组是有序的,因为这个前提,我们可以考虑使用双指针的思路,缩小范围,进而求得答案。 这里,先注意题目中所给出的要求: 现在说下算法的具体思路: 算法实现的过程如下图: 具体的代码实现如下。 公众号 【书所集录】 LeetCode 167. 两数之和 II - 输入有序数组 | Python 标签:图解 targe enter 算法实现 lazy turn 开始 while 来源 原文地址:https://www.cnblogs.com/yiluolion/p/13346549.html167. 两数之和 II - 输入有序数组
https://leetcode-cn.com/problems/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 。
解题思路
left, right
,分别指向有序数组的首尾;two_sum
,与 target
进行比较:
two_sum == target
,返回 [left + 1, right + 1]
(因为返回下标值从 1 开始)two_sum > target
,则向前移动右指针;two_sum ,则向后移动左指针。
代码实现
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
length = len(numbers)
# 定义双指针,分别指向数组首尾
left = 0
right = length - 1
while left target:
right -= 1
# 两数和小于 target,移动左指针增大两数和
else:
left += 1
return None
实现结果
欢迎关注
上一篇:Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现S
下一篇:Understand Spring Security Architecture and implement Spring Boot Security
文章标题:LeetCode 167. 两数之和 II - 输入有序数组 | Python
文章链接:http://soscw.com/index.php/essay/75014.html