首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不借助变量交换两个

不借助变量交换两个数 我们在平时写代码的过程之中,竟然会有交换两个变量值的需求。然而我们大多数还是会采用借助额外变量的方式,因为这种方式不仅简单,容易理解,可读性高, 更重要的是适用范围广。...那么今天我们来研究一下《如何不借助变量交换两个数》。 借助额外的变量 在正式解这道题之前,我们先用最基础的借助额外变量的方法来做一下。...JavaScript代码: var a = 1; var b = 2; var temp = a; a = b; b = temp; 这个过程就像交换两个杯子中的水一样,如果不借助任何外物,显然我们不能用常规方法交换两个杯子的水...这在两个数字都非常大,以至于两个加起来 无法用数字表示的时候非常有用。 ?...于是对于两个数字,a 和 b。则有 a ^ a ^ b 就等于 b 。我们可以利用这个性质来完成交换。 实际上,有些算法题就可以用这个性质轻松解决。

83120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript两个变量交换值(不使用临时变量

    概要 本文主要描述,如何不使用中间值,将两个变量的值进行交换。  前三种只适用于number类型的数值交换,第四和第五种适合其他类型。...一、普通做法 var a = 1, b = 2, tmp; tmp = a; a = b; b = tmp; 普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存。...a = a + b; // a = 3, b = 2 b = a - b; // a = 3, b = 1 a = a - b; // a = 2, b = 1 通过算术运算过程中的技巧,可以巧妙地将两个值进行互换...但是,有个缺点就是变量数据溢出。因为JavaScript能存储数字的精度范围是 -253 到 253。所以,加法运算,会存在溢出的问题。...五、利用数组特性进行交换 var a = 1, b = 2; a = [a, b]; b = a[0]; a = a[1];

    1.6K20

    你会不借助变量交换两个数么?

    平时写代码的过程之中,经常会有交换两个变量值的需求。然而我们大多数还是会采用借助额外变量的方式,因为这种方式不仅简单,容易理解,可读性高, 更重要的是适用范围广。...那么今天我们来研究一下《如何不借助变量交换两个数》。 借助额外的变量 在正式解这道题之前,我们先用最基础的借助额外变量的方法来做一下。...JavaScript代码: var a = 1; var b = 2; var temp = a; a = b; b = temp; 这个过程就像交换两个杯子中的水一样,如果不借助任何外物,显然我们不能用常规方法交换两个杯子的水...这在两个数字都非常大,以至于两个加起来 无法用数字表示的时候非常有用。 ?...于是对于两个数字,a 和 b。则有 a ^ a ^ b 就等于 b 。我们可以利用这个性质来完成交换。 实际上,有些算法题就可以用这个性质轻松解决。

    1.2K10

    Python中有几种办法交换两个变量的值?

    废话不多说,开始今天的题目: 问:说说Python中有几种办法交换两个变量的值? 答:交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的。...今天这个面试是问大家有几种办法来实现交换两个变量的值 。在没开始看具体答案前,你可以先想想看 。...def swap(a,b): temp = a a = b b = temp print(a,b) 2、方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组中...def swap2(a,b): a,b = b,a print(a,b) 3、方法三 这个方法,是不是很少人想到了,采用加减法来交换 。我们不考虑效率,能达到交换的效果就行 。...通过按位异或运算来交换变量的值,可以减少变量的定义,同时减少计算机对代码的解析时间。

    81620

    Python中有几种办法交换两个变量的值?

    废话不多说,开始今天的题目: 问:说说Python中有几种办法交换两个变量的值? 答:交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的。...今天这个面试是问大家有几种办法来实现交换两个变量的值 。在没开始看具体答案前,你可以先想想看 。...def swap(a,b): temp = a a = b b = temp print(a,b) 2、方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组中...def swap2(a,b): a,b = b,a print(a,b) 3、方法三 这个方法,是不是很少人想到了,采用加减法来交换 。我们不考虑效率,能达到交换的效果就行 。...通过按位异或运算来交换变量的值,可以减少变量的定义,同时减少计算机对代码的解析时间。

    1.2K30

    不用临时的变量 优雅、高效的交换两个数方法

    到目前为止,我们的答题思路是没错的,就是寻找另外一种数据存储的模式,用一个变量保存两条信息的集合,我们仍然需要采用这种模式解决这个问题,但原先的简单相加的模式是不行了,于是我们想到,集合两个整型数字,是否可以从其二进制表达方面来考虑...用 1 和 0 来做简单的验证,看是否可以用异或的方式,存储信息的集合: 如果两个数是a = 1和b = 0,则: 集合 = 1 0 异或 集合 = 1 1 异或 集合 = 0 如果 a = 1 & b...= 1 集合 = 0 1 异或 集合 = 1 如果 a = 0 & b = 0 集合 = 0 0 疑惑 集合 = 0 验证结果: 可以采用信息集合的方式存储 那么我们的交换代码可以变成(C的实现):...int b = 50; a = a ^ b; // 构建集合 b = a ^ b; // 取出集合的另一个元素 a = a ^ b; // 取出集合的另一个元素 这种方式不用担心数据溢出,应该算是就地交换两个数的最佳解决方案了

    80240

    C语言经典算法之交换两个变量的值

    在C语言中,有一个经典的算法:交换两个变量的值。现在有两个数a和b,需要将a的值给b,b的值给a。下面我来分享几个方法完成这个算法吧!...方法一:借助第三个空变量 一个瓶子装满了酱油,一个罐子装满了白醋,试问如何将酱油和白醋互换?最容易的方法是另外去找一个空杯子,先将酱油倒入空杯子,再将白醋倒入瓶子,最后将酱油倒入罐子。...核心思路: 声明第三个变量t,先将a的值赋值给t,再将b的值赋值给a,最后将t的值赋值给b。这样就完成a值和b值的互换。...t; printf("a = %d b = %d",a,b); return 0; } 运行编译上面的源代码,将会输出以下结果: a = 10 b = 5 方法二:纯数学思想 给定两个

    2.6K21

    异或运算的巧用 → 不用额外的变量,如何交换两个变量的值?

    、乘法也有交换律一样,异或运算也有交换律   例如:15 ^ 8 = 8 ^ 15   (N ^ M) ^ Y = N ^ (M ^ Y)   同加法有结合律、乘法有结合律一样,异或运算也结合律   ...例如:(15 ^ 8) ^ 3 = 15 ^ (8 ^ 3) 具体应用   前面讲了那么多理论,大家可能没啥感觉,接下来我们就看看具体的案例,让大家好好感觉感觉   不用额外的变量交换两个变量的值...  楼主在以往的面试过程中,确确实实被面到过这个问题,关键是当时没答上来   这个问题的考点就是 XOR   假设这两个变量分别是 N(值为 5)、M(值为 6),通过三次 XOR 即可交换 N、M...、异或的结合律,可推算出:这串数字全部进行异或运算,最终的结果就是出现了奇数次的那个数字   此时的额外空间复杂度是 O(1) ,只用到了两个额外变量: eor 、 cur   找出 1 至 n...这个解法没那么好理解,大家好好琢磨琢磨 总结   1、 XOR 用来判断同位上的值是否不同   2、 出现奇数个 、 偶数个 、 缺失的 、 重复的 字眼,可以往 XOR 考虑   3、关于 不用额外的变量交换两个变量的值

    1.4K10
    领券