当前位置:网站首页>【Leetcode】167-两数之和II -输入有序数组
【Leetcode】167-两数之和II -输入有序数组
2022-07-02 12:09:00 【酥酥~】
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。
以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。
你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
示例 1:
输入: numbers = [2,7,11,15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
示例 2:
输入: numbers = [2,3,4], target = 6
输出: [1,3]
解释: 2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。
示例 3:
输入: numbers = [-1,0], target = -1
输出: [1,2]
解释: -1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
提示:
- 2 <= numbers.length <= 3 * 104
- -1000 <= numbers[i] <= 1000
- numbers 按 非递减顺序 排列
- -1000 <= target <= 1000
- 仅存在一个有效答案
#首先是使用双循环,果不其然超时了
class Solution(object):
def twoSum(self, numbers, target):
length = len(numbers)
first = 0
second = 1
while first<length-1:
while second<length:
if numbers[first]+numbers[second]==target:
return [first+1,second+1]
second+=1
first+=1
second=first+1
#然后将第二层循环替换为二分查找:
class Solution(object):
def twoSum(self, numbers, target):
length = len(numbers)
first = 0
while first<length-1:
left = first+1
right = length-1
while left<=right:
mid = int((left+right)/2)
if numbers[first]+numbers[mid]==target:
return [first+1,mid+1]
elif numbers[first]+numbers[mid]<target:
left = mid+1
else:
right = mid-1
first+=1
return [-1,-1]
#双指针
class Solution(object):
def twoSum(self, numbers, target):
length = len(numbers)
left = 0
right = length-1
while left<right:
if numbers[left]+numbers[right]==target:
return [left+1,right+1]
elif numbers[left]+numbers[right]<target:
left+=1
else:
right-=1
return [-1,-1]
边栏推荐
- 12_ Redis_ Bitmap_ command
- 自定义异常
- SQL transaction
- Application and practice of Jenkins pipeline
- Topology architecture of the minimum deployment of tidb cluster
- 彻底弄懂浏览器强缓存和协商缓存
- Markdown tutorial
- How does the computer set up speakers to play microphone sound
- 04. Some thoughts on enterprise application construction after entering cloud native
- Data analysis thinking analysis methods and business knowledge - business indicators
猜你喜欢
. Net again! Happy 20th birthday
03_ Linear table_ Linked list
Solve the problem of frequent interruption of mobaxterm remote connection
Tidb data migration tool overview
14_ Redis_ Optimistic lock
XML Configuration File
密码学基础知识
终于搞懂了JS中的事件循环,同步/异步,微任务/宏任务,运行机制(附笔试题)
17_Redis_Redis发布订阅
Learn the method code example of converting timestamp to uppercase date using PHP
随机推荐
Learn the method code of using PHP to realize the conversion of Gregorian calendar and lunar calendar
Leetcode question brushing - parity linked list 328 medium
Tidb cross data center deployment topology
06_ Stack and queue conversion
02.面向容器化后,必须面对golang
10_Redis_geospatial_命令
List set & UML diagram
. Net again! Happy 20th birthday
Mavn builds nexus private server
18_ Redis_ Redis master-slave replication & cluster building
19_Redis_宕机后手动配置主机
Redux——详解
Leetcode skimming - remove duplicate letters 316 medium
15_ Redis_ Redis. Conf detailed explanation
05_ queue
folium,确诊和密接轨迹上图
06_栈和队列转换
LeetCode刷题——递增的三元子序列#334#Medium
PHP method to get the index value of the array item with the largest key value in the array
03.golang初步使用