问题描述:

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值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 - 输入有序数组相关推荐

  1. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  2. leetcode(167)两数之和 II - 输入有序数组

    两数之和 II - 输入有序数组 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两 ...

  3. LeetCode 167. 两数之和 II - 输入有序数组(双指针)

    1. 题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: ...

  4. LeetCode 167. 两数之和 II - 输入有序数组 思考分析

    目录 1.暴力,超时 2.双指针+滑动窗口+条件限制 AC 3.观看题解(吸取他人经验) 1.二分查找 2.双指针 3.双指针+二分查找 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和 ...

  5. LeetCode 167 两数之和 II - 输入有序数组

    题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数.函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2.说明:返回的下 ...

  6. Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现

    解题思路: 因为数组本身是有序的,所以比较简单.定义两个指针,分别指向数组的头部和尾部. 偏大的话,就将尾部指针向前移一位: 偏小的话,就将头部指针向后移一位. class Solution { pu ...

  7. 2. Leetcode 167. 两数之和 II - 输入有序数组 (数组-双向双指针)

    给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...

  8. Leetcode 167. 两数之和 II - 输入有序数组 (每日一题 20210818)

    给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers 的下标 ...

  9. c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...

    点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...

  10. 力扣 167. 两数之和 II - 输入有序数组

    167. 两数之和 II - 输入有序数组 给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数 ...

最新文章

  1. 服务器技术综述(三)
  2. 为什么可积不一定可导_耳机为什么分L和R?你一定不知道真相
  3. 删除驱动符号链接出错-变量作用域和RtlInitUnicodeString的问题
  4. c++继承中的构造和析构
  5. Leetcode题库 2038.邻色同删(双指针法 C实现)
  6. 前端学习(3250):一个简单的文件
  7. MYSQL导入数据出现ERROR 1049 (42000): Unknown database 'n??;'
  8. java this 代替_关于JAVA中this的使用方法小结
  9. opencv绘制矩形框
  10. Spring IOC源码笔记(一)
  11. 软件工程用的15种图
  12. java中 移位运算符_java中的移位运算符心得总结
  13. ASA使用ASDM管理
  14. 查普曼-科莫高洛夫方程Chapman–Kolmogorov equation
  15. 苹果手机微信声音小怎么调大声_怎么把手机声音变大,试试这种方法
  16. 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程
  17. 最难忘的一节计算机课,我最难忘的一节课
  18. macbook更新系统服务器,mac系统怎么更新_苹果笔记本系统如何更新-win7之家
  19. C++/MFC 面试题(一)
  20. EASYAR + UNITY + MMD4 制作 AR 小软件(特效非常赞)

热门文章

  1. python叫什么-又一个python小游戏,叫什么不知道了。。。
  2. python3.6.2安装教程-CentOS 6.5中安装Python 3.6.2的方法步骤
  3. python官网怎么改中文-pycharm如何设置成中文
  4. 免费学python的软件-初学python编程,有哪些不错的软件值得一用?
  5. codeforces D Santa Claus and a Palindrome(hash+贪心)
  6. LeetCode Peeking Iterator
  7. LeetCode Remove Duplicates from Sorted List
  8. 题目1195:最长最短文本
  9. linux入门级知识回顾
  10. this.getClass()和super.getClass()得到的是同一个类