给定一个整数数组,返回两个数字的位置,以便它们加起来成为一个特定值。

假设每个输入都只有一个解决方案,并且不会两次使用同一元素。
Input: [2, 7, 11, 15],target:9
Output:[0, 1]

因为肯定会有两个数相加等于target, 并且是有序list, 所以遍历list里面的数时按顺序就可以

Method 1 两层循环遍历list

每次对第i个数字进行操作, 判断其后面的数与它相加是否等于target

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)):for j in range(i+1,len(nums)):if nums[i]+nums[j]==target:return [i,j]
'''
nums=[1,2,3,4] target=7
i=1>>j=2,3,4 加和不等于7
i=2>>j=3,4 ...
i=3>>j=4 加和等于7
'''

时间复杂度为1(n-1)+2(n-2)+...(n-1)1的累加

Method 2 单层循环字典定位

建立一个字典temp, i表示在nums中的位置, j表示数值, 如果target-j的值不存在字典里,那么就把temp[j]=i存入字典, 如果存在就返回i和target-j在字典中对应的value也就是i值

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:temp={}for i,j in enumerate(nums):if target-j not in temp:temp[j]=ielse:return [i, temp[target-j]]

时间复杂度O(n)

method2速度比method1快

Java

  1. 简历一个map
  2. 如果target-nums[currentNum]存在map中, 返回map中target-nums[currentNum]对应的value(位置)
  3. 如果不存在, 将nums[curentNum]和对应位置存储到map中
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {if (map.containsKey(target - nums[i])) {return new int[]{map.get(target - nums[i]), i};} else {map.put(nums[i], i);}}return new int[]{0, 0};}
}

1. Two Sum查找列表中两数加和等于特定值Python Java相关推荐

  1. 查找数组中两两之和等于X的整数对(C语言实现)

    王道数据结构线性章节的思维拓展 一个长度为N的整形数组A[1-N],给定整数X,设计一个时间复杂度不超过O(nlog2^n)的算法,查找数组中所有两两之和等于X的整数对(每个元素只输出一次) 书上有可 ...

  2. Python查找列表中相加等于s的n个数字(combinations的使用)

    from random import randrange from itertools import combinations print("查找列表中相加等于s的n个数字: ") ...

  3. 查找有向图中两个顶点之间是否存在路径

    查找有向图中两个顶点之间是否存在路径 给定一个有向图和其中的两个顶点,检查是否存在从第一个给定顶点到第二个顶点的路径. Consider the following Graph:Input : (u, ...

  4. python 余数_python中两数相除取余数怎么运算

    在Python中取余数可以通过取模运算符%或通过divmod()函数来计算. 1.取模运算符%: 所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b的余数.用数学语言来 ...

  5. 找出数组中两数之和为指定值的所有整数对

    一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一 ...

  6. Python产生100个1—100的随机数放入列表Num中,输出列表中的数,然后将它们排序,并输出排序结果。

    import random #内建函数 Num=[] for i in range(101):Num.append(random.randint(1,100)) #append()将参数添加到列表末尾 ...

  7. Java中两数交换引发的值传递问题及解决方案

    Java中两数交换引发的值传递问题及解决方案 今天导师分享了一个有趣的代码,记录一下,让我们一起看看~ //交换两个整数 private static void swap(int i, int j) ...

  8. Js两数加起来=目标数的下标,返回的下标按升序排列

    描述 :给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列.(注:返回的数组下标从1开始算起,保证target一定可以由数 ...

  9. python找列表中相邻数的个数_利用python求相邻数的方法示例

    前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...

最新文章

  1. 软件架构设计 温昱著 - 读书笔记
  2. CloudStack学习-1
  3. Golang加密md5
  4. spring bean中scope=prototype“的作用
  5. kali linux fuzz工具集简述
  6. 最新版富文本编辑器UEditor操作教程
  7. 陶陶摘苹果(信息学奥赛一本通-T1103)
  8. 测试显示富士通UHF RFID亚麻标签可在1.5T及3T的MRI系统内使用
  9. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...
  10. mybatis 数据库配置-事务处理
  11. pyspark对应的scala代码PythonRDD对象
  12. 梦幻一场——关于《梦断代码》
  13. python点击屏幕坐标获取_python+appium 点击屏幕坐标操作(qq头像为例)
  14. python中集合可以使用下标吗_Python之集合
  15. 路由器IP地址的配置
  16. 从网上下载一个vue项目,跑起来的全过程
  17. 深信服easyconnect下载_深信服新一代数据防泄密解决方案荣登数安天下榜中榜
  18. 导航栏调透明度HTML,导航栏透明度问题
  19. 2022煤气上岗证题目及答案
  20. 老路《用得上的商学课》学习笔记(6-10课)

热门文章

  1. Android 监听屏幕唤醒、关闭和解锁的广播
  2. 用了postman,接口测试不用愁了
  3. python读写tif文件
  4. UE4中修改模型mesh资源的枢轴坐标原点位置
  5. HTML的样式及引入样式的三种类型
  6. 每日新闻:抖音杀入小程序战场;懂车帝发布SaaS系统 ; 汉得开源其企业级PaaS平台;甲骨文推出“第二代云” 向AWS发起挑战...
  7. DeleteObject()
  8. AD账号导入--dsadd user
  9. 单片机实验(十五)74LS47数码管译码
  10. hibernate 二级缓存 @cache注解