目录
数组异或操作
给你两个整数,n 和 start 。
数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。
请返回 nums 中所有元素按位异或(XOR)后得到的结果。
c++实现
cppclass Solution { public: int xorOperation(int n, int start) { int num=0; int result = 0; while(num<n){ if(num==0){ result=start + num*2; num++; continue; } result = result ^ (start + num*2); num++; } return result; } };
java实现
javaclass Solution { public int xorOperation(int n, int start) { // 定义列表元素 ArrayList<Integer> list_result = new ArrayList<>(); //生成数据 for(int i = 0; i < n; i++) { // 生成数据 list_result.add(start + 2*i); System.out.println("生成的数据"+list_result.get(i)); } // 赋予初始值 int result_digits = list_result.get(0); //异或操作 for (int j = 1; j < n; j++) { result_digits = result_digits ^ list_result.get(j); } return result_digits; } }
javaclass Solution { public int xorOperation(int n, int start) { int result_digits_1 = 0; for(int i = 0; i < n; i++) { if(i == 0) { result_digits_1 = start + 2*i; continue; } result_digits_1 = result_digits_1 ^ (start + 2*i); } return result_digits_1; } }
python3实现
pythonclass Solution: def xorOperation(self, n: int, start: int) -> int: num=0 result = 0 while(num<n): if(num==0): result=start + num*2 num +=1 continue result = result ^ (start + num*2) num +=1 return result
python实现
pythonclass Solution(object): def xorOperation(self, n, start): """ :type n: int :type start: int :rtype: int """ num=0 result = 0 while(num<n): if(num==0): result=start + num*2 num +=1 continue result = result ^ (start + num*2) num +=1 return result
javascript实现
javascript/** * @param {number} n * @param {number} start * @return {number} */ var xorOperation = function(n, start) { var result = 0 var num=0 while(num<n){ if(num==0){ result=start + num*2 num++ continue } result = result ^ (start + num*2) num++ } return result };
typescript实现
TypeScriptfunction xorOperation(n: number, start: number): number { var result = 0 var num=0 while(num<n){ if(num==0){ result=start + num*2 num++ continue } result = result ^ (start + num*2) num++ } return result };
C#实现
cspublic class Solution { public int XorOperation(int n, int start) { int result = 0; int num=0; while(num<n){ if(num==0){ result=start + num*2; num++; continue; } result = result ^ (start + num*2); num++; } return result; } }
c实现
cppint xorOperation(int n, int start) { int num=0; int result = 0; while(num<n){ if(num==0){ result=start + num*2; num++; continue; } result = result ^ (start + num*2); num++; } return result; }
Go实现
Gofunc xorOperation(n int, start int) int { var result = 0 for i :=0; i<n ;i++ { if(i==0){ result=start + i*2 continue } result = result ^ (start + i*2) } return result }
Kotlin实现
Kotlinclass Solution { fun xorOperation(n: Int, start: Int): Int { var result = 0 /** 定义for循环 for(i in 0..n-1){ } */ for(i in 0..n-1){ if(i==0){ result=start + i*2 continue } // xor 异或操作 result = result xor (start + i*2) } return result } }
定义for循环
for(i in 0..n-1){
}
// xor 异或操作
Swift实现
Swiftclass Solution { func xorOperation(_ n: Int, _ start: Int) -> Int { var result = 0 /** // for循环 for i in 1..<n {} */ for i in 0..<n { if(i==0){ result=start + i*2 continue } result = result ^ (start + i*2) } return result } }// for循环
for i in 1..<n {}
Rust实现
rustimpl Solution { pub fn xor_operation(n: i32, start: i32) -> i32 { let mut result = 0; /** // for循环 for i in (0..n) {} */ for i in (0..n) { if(i==0){ result=start + i*2; continue; } result = result ^ (start + i*2); } return result; } }Rust定义可变变量 let mut 变量名
定义for循环
for i in(0..n){
}
相当于
for(int i=0; i<n; i++){
}
Ruby实现
ruby# @param {Integer} n # @param {Integer} start # @return {Integer} def xor_operation(n, start) result = 0 for i in (0..n-1) if (i==0) result=start + i*2 next end result = result ^ (start + i*2) end return result end
PHP实现
phpclass Solution { /** * @param Integer $n * @param Integer $start * @return Integer */ function xorOperation($n, $start) { $result = 0; for($i=0;$i<$n;$i++){ if ($i==0){ $result=$start + $i*2; continue; } $result = $result ^ ($start + $i*2); } return $result; } }
Dart实现
Dartclass Solution { int xorOperation(int n, int start) { int num=0; int result = 0; while(num<n){ if(num==0){ result=start + num*2; num++; continue; } result = result ^ (start + num*2); num++; } return result; } }
Scala实现
Scalaobject Solution { def xorOperation(n: Int, start: Int): Int = { var num=0 var result = 0 while(num<n){ if(num!=0){ result = result ^ (start + num*2) num +=1 }else{ result=start + num*2 num +=1 } } return result } }
Elixir实现
Scaladefmodule Solution do @spec xor_operation(n :: integer, start :: integer) :: integer def xor_operation(n, start) do import Bitwise # 递归,问题拆解 # 每个任务都是 第一个数 ^^^ 第二个数 # 递归需要 有终止条件 if n>0 do # 生成数据 数据转化 (start+(n-1)*2) ^^^ (xor_operation(n-1,start)) else 0 end end end
- 忽略了 Elixir 的变量不可变性
result = result ^^^ ... # ❌ Elixir 不允许这样"更新"变量
- 递归解法
Solution.xor_operation(3, 2) # 应计算: 2 ^ 4 ^ 6 # 递归展开: # = (2 + 2*2) ^^^ xor_operation(2, 2) # = 6 ^^^ ((2 + 1*2) ^^^ xor_operation(1, 2)) # = 6 ^^^ (4 ^^^ ((2 + 0*2) ^^^ xor_operation(0, 2))) # = 6 ^^^ (4 ^^^ (2 ^^^ 0)) # = 6 ^^^ (4 ^^^ 2) # = 6 ^^^ 6 = 0
Erlang实现
Erlangxor_operation(N, Start) when is_integer(N), is_integer(Start), N >= 0 -> if N > 0 -> (Start + (N - 1) * 2) bxor xor_operation(N - 1, Start); true -> 0 end.
- Erlang 的if有点像 case语句
- 异或操作 bxor
- if
情况1 -> 结果1
情况2 -> 结果2
情况3 -> 结果3
end- when is_integer(N) 判断数据
N >=0 判断数据
Racket实现
Erlang(define/contract (xor-operation n start) (-> exact-integer? exact-integer? exact-integer?) (if (= n 0) 0 (bitwise-xor (+ start (* 2 (- n 1))) (xor-operation (- n 1) start)))) ; bitwise-xor 异或操作
- Racket 函数调用 (函数名 参数1 参数2)
- ;bitwise-xor 异或操作
Cangjie实现
Erlangclass Solution { func xorOperation(n: Int64, start: Int64): Int64 { var result = 0 var num=0 while(num<n){ if(num==0){ result=start + num*2 num++ continue } result = result ^ (start + num*2) num++ } return result } }
