#异或法
逻辑引用可参考转载原文
#Kotlin
class Solution {
fun swapNumbers(numbers: IntArray): IntArray {
numbers[0] = numbers[0] xor numbers[1]
numbers[1] = numbers[1] xor numbers[0]
numbers[0] = numbers[0] xor numbers[1]
return numbers
}
}
#Java
class Solution {
public int[] swapNumbers(int[] numbers) {
numbers[0]^=numbers[1];
numbers[1]^=numbers[0];
numbers[0]^=numbers[1];
return numbers;
}
}
#Scala
object Solution {
def swapNumbers(numbers: Array[Int]): Array[Int] = {
numbers(0)^= numbers(1)
numbers(1)^= numbers(0)
numbers(0)^= numbers(1)
numbers
}
}
#C
int* swapNumbers(int* numbers, int numbersSize, int* returnSize)
{
*returnSize=2;
numbers[0]^=numbers[1];
numbers[1]^=numbers[0];
numbers[0]^=numbers[1];
return numbers;
}
#Rust
impl Solution {
pub fn swap_numbers(mut numbers: Vec<i32>) -> Vec<i32> {
numbers[0] ^= numbers[1];
numbers[1] ^= numbers[0];
numbers[0] ^= numbers[1];
numbers
}
}
加减法 #Kotlin
class Solution {
fun swapNumbers(numbers: IntArray): IntArray {
numbers[0] = numbers[0] -numbers[1]
numbers[1] = numbers[1] +numbers[0]
numbers[0] = numbers[0] -numbers[1]
return numbers
}
}
#Java
class Solution {
public int[] swapNumbers(int[] numbers) {
numbers[0] = numbers[0] -numbers[1] ;
numbers[1] = numbers[1] +numbers[0] ;
numbers[0] = numbers[0] -numbers[1] ;
return numbers;
}
}
#Scala
object Solution {
def swapNumbers(numbers: Array[Int]): Array[Int] = { numbers(1) = numbers(1) - numbers(0)
numbers(0) = numbers(0) + numbers(1)
numbers(1) = numbers(0) - numbers(1)
numbers(0) = numbers(0) - numbers(1)
numbers
}
}
#C
由于使用int取值范围会越界产生溢出,所以使用无符号类型
/**incle * Note: The returned array must be malloced, assume caller calls free(). */
int* swapNumbers
(unsigned int* numbers, unsigned int numbersSize, int* returnSize)
{
numbers[1] = numbers[1] - numbers[0];
numbers[0] = numbers[0] + numbers[1];
numbers[1] = numbers[0] - numbers[1];
*returnSize = 2;
return numbers;
}
#Rust
impl Solution {
pub fn swap_numbers(numbers: Vec<i32>) -> Vec<i32> {
let mut numbers = numbers;
numbers[0] = numbers[0] + numbers[1];
numbers[1] = numbers[0] - numbers[1];
numbers[0] = numbers[0] - numbers[1];
numbers
}
}