python同时满足两个条件_python算法-快速寻找满足条件的两个数
题目前提是一定存在这样两个数
解法一就不写了...一般想不到吧
一开始想到的是解法二最后的用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算法-快速寻找满足条件的两个数相关推荐
- python 多条件 选择 算法_python部署python算法 - 快速寻找满足条件的两个数
题目前提是一定存在这样两个数 解法一就不写了...一般想不到吧 一开始想到的是解法二最后的用hash表 (其实是想到创建一个跟target一样大的数组啦..存在就写入index,但是要全部找出,那得二 ...
- 编程之美2.12 快速寻找满足条件的两个数
这道题目的意思是,在一个数组中寻找两个数,使这两个数的和等于给定的数(找到任意一组就可以了). 题目读完之后,感觉这道题目还是很简单的,就是遍历数组呗,走两遍,即可以在O(n2)时间复 ...
- 第2章 数字之魅——快速寻找满足条件的两个数
快速寻找满足条件的两个数 问题描述 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在这样一组或以上符合要求的解. 分析与解法 [解法一] ...
- matlab取矩阵满足条件,[MATLAB]矩阵中寻找满足条件的元素
参见张志涌精通matlab >> A=randn(3,4) A = -0.5883 0.1139 -0.0956 -1.3362 2.1832 1.0668 -0.8323 0.7143 ...
- python用链表求两数之和_python 算法 - 008 计算两个链表所代表的整数之和 (整数相加法)...
python 算法 - 008 计算两个链表所代表的整数之和 (整数相加法) 知之者不如好之者, 好之者不如乐之者.--<雍也> 知道德者不如好道德者, 好道德者不如乐道德者, 是为形容人 ...
- python猜拳游戏三局两胜制_python石头剪刀布小游戏(三局两胜制)
Python 石头剪刀布小游戏(三局两胜),供大家参考,具体内容如下 import random all_choioces = ['石头', '剪刀', '布'] win_list = [['石头', ...
- python哈夫曼编码注意_Python 算法(2) 哈夫曼编码 Huffman Encoding
这个问题原始是用来实现一个可变长度的编码问题,但可以总结成这样一个问题,假设我们有很多的叶子节点,每个节点都有一个权值w(可以是任何有意义的数值,比如它出现的概率),我们要用这些叶子节点构造一棵树,那 ...
- python中的星号和乘号_Python 函数中参数前面一个和两个星号(**)的区别
Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化 脚本( shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. 在 P ...
- python 遍历两个列表_python 如何在一个for循环中遍历两个列表
利用python自带的zip函数可同时对两个列表进行遍历,代码如下: >>> list1 = ['a', 'b', 'c', 'd'] >>> list2 = [' ...
最新文章
- 利用计算机进行机械设计属于什么,计算机技术机械设计应用
- linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
- Cookie实现记住密码、自动登录
- 3P5 Industrial Engineering Lecture 1-2: Method of Study
- Struts2的核心文件
- Linux安装screen时的问题
- [JS]js中判断变量类型函数typeof的用法汇总[转]
- Redis基础2(Centos7 下 安装redis)
- java 动态重载_Java中是否可以实现动态重载解析?
- 机顶盒ttl无法输入_一个作业,多个TTL——Flink SQL 细粒度TTL配置的实现(二)
- 判断入栈和出栈顺序是否一致
- [高西泉] 数字信号处理(第四版)程序集
- EOF和feof()区别
- DDR controller控制器之AXI接口模块设计
- qt使用assimp加载模型_iOS使用assimpKit加载FBX模型步骤详解
- 用java敲出三角_手敲Java:打印菱形!
- 【每日一练】day(7)
- 程序综合实验一 计算器设计与实现
- android 网页词典,android 有道词典查询单词(webview版)
- GB/T 13977-2012 1:5 000 1:10 000 地形图航空摄影测量外业规范
热门文章
- 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId
- 【Elasticsearch】Elasticsearch 缓存深度剖析:一次提高一种缓存的查询速度
- 【Spark】Spark cache 报错 Exception thrown in awaitResult
- 【jvm】jvm优化 jvm linux 大页
- 【clickhouse】clickhouse 解析器
- 【Java】图解 Spring 循环依赖,写得太好了
- 【janino】janino自定义函数报错A method named xx is not declared in any enclosing class nor through a static
- Spring : 异步注解 @EnableAsync 和 @Async
- 【分布式】分布式架构-ESB SOA
- Spark学习-SparkSQL--01-SparkSQL CLI