当前位置:网站首页>【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]
边栏推荐
- Evaluation of embedded rz/g2l processor core board and development board of Feiling
- 高考录取分数线爬虫
- MySQL -- Index Optimization -- order by
- 04_ Stack
- Steps for Navicat to create a new database
- 2022 年辽宁省大学生数学建模A、B、C题(相关论文及模型程序代码网盘下载)
- 02_ Linear table_ Sequence table
- 13_Redis_事务
- Tidb data migration tool overview
- 5. Practice: jctree implements the annotation processor at compile time
猜你喜欢

Be a good gatekeeper on the road of anti epidemic -- infrared thermal imaging temperature detection system based on rk3568

4. Jctree related knowledge learning

MySQL -- Index Optimization -- order by

Storage read-write speed and network measurement based on rz/g2l | ok-g2ld-c development board

让您的HMI更具优势,FET-G2LD-C核心板是个好选择

15_ Redis_ Redis. Conf detailed explanation

语义分割学习笔记(一)

Data analysis thinking analysis methods and business knowledge - business indicators

MySQL calculate n-day retention rate

16_Redis_Redis持久化
随机推荐
高考录取分数线爬虫
Steps for Navicat to create a new database
NBA player analysis
损失函数与正负样本分配:YOLO系列
02.面向容器化后,必须面对golang
16_ Redis_ Redis persistence
密码学基础知识
15_Redis_Redis.conf详解
面对“缺芯”挑战,飞凌如何为客户产能提供稳定强大的保障?
04. Some thoughts on enterprise application construction after entering cloud native
Record an interview
彻底弄懂浏览器强缓存和协商缓存
Evaluation of embedded rz/g2l processor core board and development board of Feiling
Huffman tree: (1) input each character and its weight (2) construct Huffman tree (3) carry out Huffman coding (4) find hc[i], and get the Huffman coding of each character
XML Configuration File
Principles, language, compilation, interpretation
Apprendre le Code de la méthode de conversion du calendrier lunaire grégorien en utilisant PHP
LeetCode刷题——两整数之和#371#Medium
06_ Stack and queue conversion
Redux - detailed explanation