给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为gai目标值的 两个 整数。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time : 2018/11/17/017 22:17
# @Author : BenjaminYang
# @FileName: twosum.py
# @Software: PyCharm
# @Blog :http://cnblogs.com/benjamin77 class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# 方法一:太抽象难以理解
'''
for index, value in enumerate(nums):
next_index=index+1
if target - value in nums[next_index:]:
return [index,nums[next_index:].index(target-value)+next_index+1]
''' # 方法二:使用双层for循环 效率较低但是易于理解
'''
result=[]
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if target==nums[i]+nums[j]:
result.append(i)
result.append(j)
return result
'''
# 方法三:
# 一次循环求差,然后在给定的list中寻找是否有相同值出现,求其index。 # 有一个小技巧是可以先用x代替原始元素。 # 只需要一次循环就可完成,在时间复杂度上优于第一种算法。
result=[]
nums_1=nums.copy() #浅拷贝
i=0
while len(nums)>0:
pop=nums.pop(0) #弹出列表的第一个元素
jj=nums_1[i] #jj对应的值为index为0-3的值
nums_1[i]='x' if target - pop in nums_1:
next_index=nums_1.index(target - pop) #如果targe-下一个目标值不为零 就将列表的第一个索引赋值给next_index
if i !=next_index: #如果弹出后的第一个索引不等于下一个目标索引就可以认定 这两个索引就是目标索引
result.append(i)
result.append(next_index)
break
nums_1[i]=jj # #如果不满足条件就将原始值赋给第一位
i+=1 #每次循环初始索引加1 return result
nums = [2, 7, 11, 15]
s = Solution()
target = 9
print(s.twoSum(nums, target))

python3的leetcode题,两个数求和等于目标值,返回这两个数的索引组成的列表(三种方法)的更多相关文章

  1. 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...

  2. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  3. 两种设置disabled属性以及三种方法移除disabled属性

    //两种方法设置disabled属性 $('#areaSelect').attr("disabled",true); $('#areaSelect').attr("dis ...

  4. mfc 在VC的两个对话框类中传递参数的三种方法

    弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...

  5. 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法

    今天面试,遇到面试官询求最大公约数.小学就学过的奥数题,居然忘了!只好回答分解质因数再求解! 回来果断复习下,常用方法辗转相除法和更相减损法,小学奥数都学过,很简单,就不细说了,忘了的话可以百度:ht ...

  6. 在CentOS上安装Python3的三种方法

    Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x你可以按照此文的三个方法进行安装. 注:本文示例安装版本为Python3.5, 一.Python源代码编译安装 安 ...

  7. 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)

    第一种:算术运算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a.b看做数轴上的点,围绕两点间的距离来进行计算.具 ...

  8. c语言实现两数交换的三种方法

    实现变量的值互相交换的三种不同方法 方法一:利用第三个变量来实现数值的交换 int tmp; tmp = a; a = b; b = tmp; 此方法直观,简易.不易出错,推荐使用 方法二:利用两个变 ...

  9. 【转载】Python中如何高效实现两个字典合并,三种方法比较。

    本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...

随机推荐

  1. css3 移入移出动画

    css: /*css3 鼠标移入移出动画 底部出现阴影层文字叙述*/ *{;} .div1{width:300px;height: 300px;text-align: center; backgrou ...

  2. 软工实践 - 第二十一次作业 BETA 版冲刺前准备

    软工 · BETA 版冲刺前准备(团队) 过去存在的问题 组员之间缺乏沟通,前后端缺乏沟通协作 组员积极性不高 基础知识不够扎实 手动整合代码效率过低 我们已经做了哪些调整/改进 通过会议加强组员之间 ...

  3. NHibernate3.3.3 学习笔记1

    前言 昨天在园友的介绍下,我找了一本学习NHibernate的书:<NHibernate 3 Beginner’s Guide>. 第一章我直接跳过了,因为是英文版的看起来很吃力,且第一章 ...

  4. 深入理解Java Web——Servlet

    1.概述 狭义上看,是java的一个接口. 广义上看,任何直接或间接实现了Servlet接口的类. 2.核心对象 下面就是Servlet接口的内容: public abstract interface ...

  5. akka与slf4j导致jvm直接crash的诡异

    流程很简单,创建actorSystem,通过actorSystem获取AkkaQueryServiceRetriever,进而通过传递path获得的Gateway进行通信. 之前在主项目里跑的很稳定, ...

  6. koajs框架学习

    目录: 概述 hello world 中间件 路由中间件koa-router body解析中间件koa-bodyparser 授之以渔 一.概述 koa 是由 Express 原班人马打造的,致力于成 ...

  7. Oracle锁表查询以及解锁

    一.查看锁表进程SQL语句 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...

  8. 【bzoj1412】[ZJOI2009]狼和羊的故事 网络流最小割

    题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...

  9. css引入特殊字体

    http://www.fontsquirrel.com/tools/webfont-generator        ttf格式的字体转换成其他格式的字体   css引入特殊字体建议只是用英文字体,中 ...

  10. [Leetcode] search a 2d matrix 搜索二维矩阵

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...