知識積累 如何不用額外變數交換兩個數

2021-10-25 15:51:18 字數 942 閱讀 7240

package com.example.demo.algorithm;

/** * @description :

* 如何不用額外變數交換兩個數

* *普通公式:

* 異或運算:相同為0,不同為1

* 同或運算:相同為1,不同為0

* 超級公式:

* 異或運算 = 無進製相加

* * 異或運算的性質:

* 1)、0^n=n n^n=0

* 2)、異或運算滿**換律和結合律

* * @author : darren

* @date : 2021 年 02 月 07 日 20:06:18

* @since : 1.0

*/public class j008_swapvariable

/*** 兩個變數交換不申請額外遍歷

* 注意:

* 變數1和變數2必須不相等或者值相等記憶體位址不能相等,否則兩個相同的變數異或會變成0

** @param arrays

* @param var1 變數1

* @param var2 變數2

*/public static void swap(int arrays, int var1, int var2)

//var1 = 3 var2=4

//第一行執行 var1 = 3^4 var2=4

arrays[var1] = arrays[var1] ^ arrays[var2];

//第二行執行 var1 = 3^4 var2=4^3^4=3

arrays[var2] = arrays[var1] ^ arrays[var2];

//第三行執行 var1 = 4 var2=3

arrays[var1] = arrays[var1] ^ arrays[var2];

}}

不用額外變數交換兩個整數的值

題目 如何不用任何額外變數交換兩個整數的值 基本思路 如果給定整數a和b使用如下三行 即可交換a和b的值 a a b b a b a a b 如何理解這三行 的具體功能呢?首先要理解關於異或運算的特點 假設a異或b的結果為c,c就是a整數字資訊和b整數字資訊的所有不同的資訊。比如 a 4 100,b...

不用額外變數交換兩個整數的值

不用額外變數交換兩個整數的值 不用額外變數交換兩個整數的值。輸入描述 輸入一行,包含兩個整數n和m 1 09 n m 1 09 10 9 leq n,m leq 10 9 109 n,m 109 輸出描述 輸出交換後的n和m的值。示例1輸入2 3輸出3 2備註 時間複雜度o 1 o 1 o 1 額外...

如何不用第三個變數實現兩個數的交換

一般我們在寫程式時如果遇到兩個數需要交換時寫作如下 1 intx,y 23 inttemp 45 temp x x y y temp 而如果不允許有第三個變數出現即不允許有temp出現時應該如何做呢?可以寫作如下 1 intx,y 23 x x y 45 y x y 67 x x y 上述一般可以滿...