给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

class Solution:def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for i in nums:if target - i in nums:return [nums.index(i), nums.index(target - i)]nums = [2, 7, 11, 15]
target = 9
s = Solution()
print(s.twoSum(nums, target))

以上代码其实还有一点问题,就是 同样的元素不能被重复利用,假如数组是[4,3,5],target=8,那么返回值就是[0,0] 了

class Solution:
def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for i in nums:if target - i in nums and i is not target-i:return [nums.index(i), nums.index(target - i)]
# nums = [2, 7, 11, 15]
# target = 9
nums = [4, 3, 5, 15]
target = 8
s = Solution()
print(s.twoSum(nums, target))

如果这个题目只用一次循环如何找到这两个数?

思路: 我们可以将数据放在dict中
这个涉及到判断一个元素在不在一个容器中,容器的数据结构不同,查找方式不同
对于dict,其他语言的map,判断一个元素在不在容器中,list要遍历,而set和dict直接根据哈希算出,不需要遍历.

class Solution:def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""dict1 = {}for k, i in enumerate(nums):dict1[i] = kif target - i in dict1 and i is not target - i:return [dict1[target - i], dict1[i]]# nums = [2, 7, 11, 15]# target = 9nums = [4, 3, 5, 15]target = 8s = Solution()print(s.twoSum(nums, target))

点评:其实以上代码还是存在问题的,问题在于,对于相同的元素[3,3],target=6,测试一下,便懂.

class Solution:
def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for k, i in enumerate(nums):if target - i in nums[k + 1:]:return [k, nums[k + 1:].index(target - i) + k + 1]

那么对于字典的那种方式,就只能,索引为key,数据为value,只是这样一来,判断在或者不在,还是多了一层循环

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数相关推荐

  1. 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值

    编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值 目录 题目描述 代码实现 题目描述 序列重排:给一个长度为n的序列A,求找出 ...

  2. python步骤解析 给定一个整数数组和目标值_给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...

    python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...

  3. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /*** 思路:数组被 ...

  4. 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 可以假定 ...

  5. 【408计算机考研】|【2018统考真题-41】| 给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数

    目录 一.题目 二.解答 三.测试数据 一.题目   给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算 法,找出数组中未出现的最小正整数.例如,数组{-5, 3, 2, 3}中未 ...

  6. 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。

    笔者初涉<算法设计与分析>这门专业课,在做一些算法设计题的过程中遇到一些小感悟,特此记录和大家分享. 下面直接给出算法题目: 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 ...

  7. 2018.3.12 Leecode习题 给定一个整数数列,找出其中和为特定值的那两个数。

    给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = 9; 因为 ...

  8. 第J题-=数组中等于K的数对(详解) =======给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  9. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度

    题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...

最新文章

  1. 简述安装Tsurugi Linux发行版
  2. [Spring cloud 一步步实现广告系统] 10. 使用Ribbon 实现微服务调用
  3. Jersey WebResource –标头不附加
  4. java filter 模式,Java设计模式----过滤器模式(挑三拣四)
  5. mysql+keepalived 双主热备高可用
  6. idea的plugins无法使用marketplace plugins are not loaded
  7. 800万行代码的鸿蒙系统,在世界上处于什么水平?
  8. 解含待定变量微分方程组
  9. 详解 undefined 与 null 的区别
  10. 基于 HTML5 WebGL 的 3D 工控裙房系统 1
  11. 看看老外是怎么对待免费软件的。
  12. 创建MovieClip类
  13. 【无标题】人工智能--大数据介绍
  14. android+屏幕色彩度,对比度/色阶/色彩 屏幕显示对比_索尼 Xperia Z2_手机Android频道-中关村在线...
  15. 爬虫学习笔记(第二章)requests模块
  16. SAP ABAP-获取屏幕字段数据
  17. Kafka原理篇:图解kakfa架构原理
  18. BPMN - 如何绘制符合良构编排的基础BPMN?
  19. 考研数学数一公式整理
  20. Ae 入门系列之十一:文本动画

热门文章

  1. USB电路_OTG检测
  2. 通用计算机冯诺依曼,那些改变了世界的IT人(1)——冯·诺依曼
  3. H3C 三层交换机策略路由配置方法
  4. 查看linux中程序是否被系统杀死,如何查看日志
  5. EffectComposer、OutlinePass特效引发的问题和卡顿
  6. Windows串口编程:使用非标准波特率
  7. P1803 凌乱的yyy
  8. Java 多组时间取交集、并集、合并
  9. Linux系统入门学习书籍
  10. centOS7 下作网络桥接