题目前提是一定存在这样两个数

解法一就不写了...一般想不到吧

一开始想到的是解法二最后的用hash表

(其实是想到创建一个跟target一样大的数组啦..存在就写入index,但是要全部找出,那得二维数组,但是后面想到target要是很大的话,是不是浪费空间了...所以改成Dict)

后面发现题目只要求给出两个数就好了啊- -

扩展问题比较有意思

找三个应该不难,其它还不清楚,有想再补充...

1.二维数组def find_pair(A, target):

B = [[] for i in range(target + 1)]

for i in range(0, len(A)):

if A[i] <= target:

B[A[i]].append(i)

for i in range(0, target / 2 + 1):

if len(B[i]) != 0 and len(B[target - i]) != 0:

print(i, B[i], target-i, B[target-i])

if __name__ == "__main__":

A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]

find_pair(A, 9)

2.字典def find_pair(A, target):

B = {}

for i in range(0, len(A)):

if A[i] <= target:

if not B.has_key(A[i]):

B[A[i]] = [i]

else:

B[A[i]].append(i)

for i in range(0, target / 2 + 1):

if B.has_key(i) and B.has_key(target-i):

print(i, B[i], target-i, B[target-i])

if __name__ == "__main__":

A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]

find_pair(A, 9)

3.这种方法都已经重新排序了,不知道书上还返回索引有什么意义...排序偷懒直接用内置的啦...def find_pair(A, target):

A.sort()

i, j = 0, len(A) - 1

while i < j:

s = A[i] + A[j]

if s == target:

print(i, A[i], j, A[j])

i += 1

j -= 1

elif s < target:

i += 1

else:

j -= 1

if __name__ == "__main__":

A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]

find_pair(A, 9)

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

python同时满足两个条件_python算法-快速寻找满足条件的两个数相关推荐

  1. python 多条件 选择 算法_python部署python算法 - 快速寻找满足条件的两个数

    题目前提是一定存在这样两个数 解法一就不写了...一般想不到吧 一开始想到的是解法二最后的用hash表 (其实是想到创建一个跟target一样大的数组啦..存在就写入index,但是要全部找出,那得二 ...

  2. 编程之美2.12 快速寻找满足条件的两个数

      这道题目的意思是,在一个数组中寻找两个数,使这两个数的和等于给定的数(找到任意一组就可以了).       题目读完之后,感觉这道题目还是很简单的,就是遍历数组呗,走两遍,即可以在O(n2)时间复 ...

  3. 第2章 数字之魅——快速寻找满足条件的两个数

    快速寻找满足条件的两个数 问题描述 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在这样一组或以上符合要求的解. 分析与解法 [解法一] ...

  4. matlab取矩阵满足条件,[MATLAB]矩阵中寻找满足条件的元素

    参见张志涌精通matlab >> A=randn(3,4) A = -0.5883 0.1139 -0.0956 -1.3362 2.1832 1.0668 -0.8323 0.7143 ...

  5. python用链表求两数之和_python 算法 - 008 计算两个链表所代表的整数之和 (整数相加法)...

    python 算法 - 008 计算两个链表所代表的整数之和 (整数相加法) 知之者不如好之者, 好之者不如乐之者.--<雍也> 知道德者不如好道德者, 好道德者不如乐道德者, 是为形容人 ...

  6. python猜拳游戏三局两胜制_python石头剪刀布小游戏(三局两胜制)

    Python 石头剪刀布小游戏(三局两胜),供大家参考,具体内容如下 import random all_choioces = ['石头', '剪刀', '布'] win_list = [['石头', ...

  7. python哈夫曼编码注意_Python 算法(2) 哈夫曼编码 Huffman Encoding

    这个问题原始是用来实现一个可变长度的编码问题,但可以总结成这样一个问题,假设我们有很多的叶子节点,每个节点都有一个权值w(可以是任何有意义的数值,比如它出现的概率),我们要用这些叶子节点构造一棵树,那 ...

  8. python中的星号和乘号_Python 函数中参数前面一个和两个星号(**)的区别

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化 脚本( shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. 在 P ...

  9. python 遍历两个列表_python 如何在一个for循环中遍历两个列表

    利用python自带的zip函数可同时对两个列表进行遍历,代码如下: >>> list1 = ['a', 'b', 'c', 'd'] >>> list2 = [' ...

最新文章

  1. 利用计算机进行机械设计属于什么,计算机技术机械设计应用
  2. linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
  3. Cookie实现记住密码、自动登录
  4. 3P5 Industrial Engineering Lecture 1-2: Method of Study
  5. Struts2的核心文件
  6. Linux安装screen时的问题
  7. [JS]js中判断变量类型函数typeof的用法汇总[转]
  8. Redis基础2(Centos7 下 安装redis)
  9. java 动态重载_Java中是否可以实现动态重载解析?
  10. 机顶盒ttl无法输入_一个作业,多个TTL——Flink SQL 细粒度TTL配置的实现(二)
  11. 判断入栈和出栈顺序是否一致
  12. [高西泉] 数字信号处理(第四版)程序集
  13. EOF和feof()区别
  14. DDR controller控制器之AXI接口模块设计
  15. qt使用assimp加载模型_iOS使用assimpKit加载FBX模型步骤详解
  16. 用java敲出三角_手敲Java:打印菱形!
  17. 【每日一练】day(7)
  18. 程序综合实验一 计算器设计与实现
  19. android 网页词典,android 有道词典查询单词(webview版)
  20. GB/T 13977-2012 1:5 000 1:10 000 地形图航空摄影测量外业规范

热门文章

  1. 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId
  2. 【Elasticsearch】Elasticsearch 缓存深度剖析:一次提高一种缓存的查询速度
  3. 【Spark】Spark cache 报错 Exception thrown in awaitResult
  4. 【jvm】jvm优化 jvm linux 大页
  5. 【clickhouse】clickhouse 解析器
  6. 【Java】图解 Spring 循环依赖,写得太好了
  7. 【janino】janino自定义函数报错A method named xx is not declared in any enclosing class nor through a static
  8. Spring : 异步注解 @EnableAsync 和 @Async
  9. 【分布式】分布式架构-ESB SOA
  10. Spark学习-SparkSQL--01-SparkSQL CLI