LeetCode--167--两数之和 II - 输入有序数组
问题描述:
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值index1 和 index2,其中 index1 必须小于 index2。
说明:
- 返回的下标值(index1 和 index2)不是从零开始的。
- 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。
方法1:
1 class Solution(object): 2 def twoSum(self, numbers, target): 3 """ 4 :type numbers: List[int] 5 :type target: int 6 :rtype: List[int] 7 """ 8 if len(numbers) == 0: 9 return [] 10 i = 0 11 j = 1 12 while j < len(numbers) and numbers[j] <= target:#先找出最接近target的值,也就是上限 13 j += 1 14 if j >= len(numbers): 15 j -= 1 16 while True: 17 if numbers[i] + numbers[j] == target: 18 return [i+1,j+1] 19 elif numbers[i] + numbers[j] < target: 20 i += 1 21 else: 22 j -= 1 23 i = 0
官方:(简洁型)
1 class Solution(object): 2 def twoSum(self, numbers, target): 3 """ 4 :type numbers: List[int] 5 :type target: int 6 :rtype: List[int] 7 """ 8 left = 0 9 right = len(numbers)-1 10 while left<right: 11 sum = numbers[left]+numbers[right] 12 if sum==target: 13 return [left+1, right+1] 14 elif sum>target: 15 right -= 1 16 else: 17 left += 1
官方二:(待看)
1 class Solution(object): 2 def twoSum(self, numbers, target): 3 """ 4 :type numbers: List[int] 5 :type target: int 6 :rtype: List[int] 7 8 """ 9 Dnum = {} 10 for i in range(len(numbers)): 11 if numbers[i] not in Dnum: 12 Dnum[target-numbers[i]] = i 13 else: 14 return [Dnum[numbers[i]]+1, i+1]
2018-09-14 17:02:13
转载于:https://www.cnblogs.com/NPC-assange/p/9647688.html
LeetCode--167--两数之和 II - 输入有序数组相关推荐
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- leetcode(167)两数之和 II - 输入有序数组
两数之和 II - 输入有序数组 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两 ...
- LeetCode 167. 两数之和 II - 输入有序数组(双指针)
1. 题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: ...
- LeetCode 167. 两数之和 II - 输入有序数组 思考分析
目录 1.暴力,超时 2.双指针+滑动窗口+条件限制 AC 3.观看题解(吸取他人经验) 1.二分查找 2.双指针 3.双指针+二分查找 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和 ...
- LeetCode 167 两数之和 II - 输入有序数组
题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数.函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2.说明:返回的下 ...
- Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现
解题思路: 因为数组本身是有序的,所以比较简单.定义两个指针,分别指向数组的头部和尾部. 偏大的话,就将尾部指针向前移一位: 偏小的话,就将头部指针向后移一位. class Solution { pu ...
- 2. Leetcode 167. 两数之和 II - 输入有序数组 (数组-双向双指针)
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...
- Leetcode 167. 两数之和 II - 输入有序数组 (每日一题 20210818)
给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers 的下标 ...
- c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...
点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...
- 力扣 167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数 ...
最新文章
- 服务器技术综述(三)
- 为什么可积不一定可导_耳机为什么分L和R?你一定不知道真相
- 删除驱动符号链接出错-变量作用域和RtlInitUnicodeString的问题
- c++继承中的构造和析构
- Leetcode题库 2038.邻色同删(双指针法 C实现)
- 前端学习(3250):一个简单的文件
- MYSQL导入数据出现ERROR 1049 (42000): Unknown database 'n??;'
- java this 代替_关于JAVA中this的使用方法小结
- opencv绘制矩形框
- Spring IOC源码笔记(一)
- 软件工程用的15种图
- java中 移位运算符_java中的移位运算符心得总结
- ASA使用ASDM管理
- 查普曼-科莫高洛夫方程Chapman–Kolmogorov equation
- 苹果手机微信声音小怎么调大声_怎么把手机声音变大,试试这种方法
- 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程
- 最难忘的一节计算机课,我最难忘的一节课
- macbook更新系统服务器,mac系统怎么更新_苹果笔记本系统如何更新-win7之家
- C++/MFC 面试题(一)
- EASYAR + UNITY + MMD4 制作 AR 小软件(特效非常赞)
热门文章
- python叫什么-又一个python小游戏,叫什么不知道了。。。
- python3.6.2安装教程-CentOS 6.5中安装Python 3.6.2的方法步骤
- python官网怎么改中文-pycharm如何设置成中文
- 免费学python的软件-初学python编程,有哪些不错的软件值得一用?
- codeforces D Santa Claus and a Palindrome(hash+贪心)
- LeetCode Peeking Iterator
- LeetCode Remove Duplicates from Sorted List
- 题目1195:最长最短文本
- linux入门级知识回顾
- this.getClass()和super.getClass()得到的是同一个类