python中交换a和b的值_交换A和B之间的元素以获得和相等
如果有这样的互换,那么两个值之间的差值必须是总和差的一半。交换两个值意味着两个列表的总和将改变,一个上升,另一个下降,以相同的数量。这两个变化必须加上掉期前的和之间的差值,且两个总和都会以相同的值(^{cd1>}和^{cd2>}或值delta(这是两个交换值之间的差异)而变化。
首先,函数将^{{cd3>}计算为总和和和和之间的δ。注意^{cd4>}可能大于^{cd5>},此时结果^{cd6>}为负值。这只意味着^{cd7>}中必须有一个小于^{{cd8>}中的目标值的值,然后交换将减少^{{cd4>}并增加^{cd5>}使它们相等。如果总和增量的奇偶性是odd而不是偶数,则永远找不到值delta是总和增量的一半,因此函数此时返回^{{cd11>}。^{cd3>}的最终值是值delta,两个交换值之间的差值量。记住,值delta是总和的一半。
算法计算^{{cd8>}中的所有值,然后测试^{{cd7>}中的所有值。只有当^{cd7>}中的^{em>a值与^{cd8>}中的aaa值不同时,才可能在^{cd8>}和^{cd7>}之间交换两个值。与^{cd7>}交换的^{cd8>}中的值需要等于^{{cd22>}。对于一个负^{cd3>}(^{cd24>}),如果一个正^{cd3>}的数值越大,它会使^{cd25>}变小。
^{cd28>}测试将查看^{{cd29>}中是否有可用的值,但它首先测试^{{cd22>}仍在[0-m]:0 <= B[i] - d测试A中所寻求的数字是否仍然为正数。
^{cd33>}如果所寻求的数字仍然不大于^{cd34>};如果^{{cd35>}关闭,^{{cd3>}为负值,则可能会发生测试。
^{cd37>}包含^{{cd8>};如果^{{cd39>}中的数字计数为true,则A中至少有一个这样的数字。这是一个可以交换的数字。
需要进行范围测试,因为^{{cd40>}列表仅保留从0到m(包括)的数字的计数,而不是负数或大于^{{cd34>}的数字。
该函数可以通过使用集合而不是计数函数来改进。没有必要知道数字在^{cd8>}中出现多少次,只是它存在存在。这将使边界检查过时,因为超出界限的数字将不会出现在^{{cd8>}的一组值中。
一旦我们有了一组a的值,我们就可以使用^{}测试这个集是否来自应用了delta的b值集的disjoint:def faster_solution(A, B, m=None): # m is ignored in this version
delta = sum(A) - sum(B)
if delta % 2 == 1:
return False
delta //= 2
return not set(A).isdisjoint(b - delta for b in B)
如果^{cd8>}中的值等于^{{cd7>}中的a值减去δ,则返回True。Python只会在^{cd47>}循环上循环,直到找到匹配(此时集合不是不相交的,并且^{cd48>}将结果反转为True),或者循环已用尽,因此在^{cd8>}中找不到此类值,并且发现这些集合是不相交的。
所示的^{cd50>}函数还有另一个问题:它需要的内存远远超过所需的内存,而且与在进行计数时实现优化循环的^{} object相比,它的速度非常慢。A^{cd52>}使用字典(哈希映射)仅存储大于0的计数。
上述设置的解决方案击败了“快速解决方案”的手:
^{pr2}$
不使用计数器,并且使用Python的set功能使长度为1000的输入速度快了17倍!
故事的寓意:使用你所选择的语言中可用的最好工具,并批判性地思考解决问题所需要的实际需要他有问题。Python内置的类型和操作通常可以让您避免在Python字节码中运行关键循环,从而显著减少算法的恒定时间因子。在
python中交换a和b的值_交换A和B之间的元素以获得和相等相关推荐
- python表达式3 5_运行以下Python中表达式后,X的值为是x=3==3,5A.3B.5C.(True,5)D.(False,5)...
运行以下Python中表达式后,X的值为是x=3==3,5A.3B.5C.(True,5)D.(False,5) 更多相关问题 [单选,A4型题,A3/A4型题] 一女性,55岁.丧偶8年,现独居,嗜 ...
- python中能够处理的最大整数是_实例讲解Python中整数的最大值输出
在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...
- R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用residuls函数从模型中提取每个样本点的残差值、可视化残差与拟合值之间的散点图来看残差的分布模式
R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用residuls函数从模型中提取每个样本点的残差值.可视化残差与拟合值之间的散点图来看残差的分布模式 目录
- python交换两个变量的值_python交换两个变量的值方法
python交换两个变量的值方法 大部分语言,例如c语言,交换两个变量的值需要使用中间变量. 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的 ...
- python怎么交换两个变量的值_python交换两个变量的值方法
大部分语言,例如c语言,交换两个变量的值需要使用中间变量. 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的交换 (a,b) = (b,a) ...
- Python中的Optional和带默认值的参数
文章目录 带默认值的参数 Typing.Optional类 Optional[X]等价于Union[X, None] 带默认值的参数 在Python中的类或者函数中,若参数在声明时附带了它的默认值,则 ...
- python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素
[填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...
- Python中如何设置函数的默认值
1 问题描述 如何在python中获得一个设置了指定参数默认值的函数呢? 2 获得指定参数默认值的函数 使用functools.partial来实现:
- python中 a or b 的值为_详解python中and和or的返回值
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. 一.and:>>> 'a' and 'b' ' ...
最新文章
- 2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来
- c++内存对齐的规则
- MVC判断用是否登录了平台
- 在JSP页面中获取系统当前日期时间
- @程序员,夏天来了,你该送心仪女生这个啦
- python常用数据结构_Python中常用的查找数据结构及算法汇总
- hyperledger fabric超级账本java sdk样例e2e代码流程分析
- 【记录】帮同学做的一个函数拟合
- 小米MAX Root,第三方REC,XP框架刷入
- Qt编写QUI皮肤生成器
- 人物肖像速写_骄傲家庭:肖像项目
- 小程序发布上线流程_微信小程序发布流程
- iphone 投android电视,手机投屏到电视上的2种方法,看完才知道原来这么简单
- AspNetPager组件
- 巴西游戏出海攻略,优质游戏出海市场
- 【EasyUI篇】一整套EasyUI示例集锦
- Stm32型号查阅手册
- 小程序--错误{errcode:40029,errmsg:invalid code, hints: [ req_id: weh8ka0297hc58 ]}
- 我国各省市县的名称列表
- Java操作数据库方式五MyBatis使用入门