数据结构与算法-数组异或操作

目录

数组异或操作

c++实现

java实现

python3实现

python实现

javascript实现

typescript实现

C#实现

c实现

Go实现

Kotlin实现

Swift实现

Rust实现

Ruby实现

PHP实现

Dart实现

Scala实现

Elixir实现

Erlang实现

Racket实现

Cangjie实现


数组异或操作

给你两个整数,nstart

数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length

请返回 nums 中所有元素按位异或(XOR)后得到的结果。

c++实现

cpp 复制代码
class 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实现

java 复制代码
class 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;
    }
}
java 复制代码
class 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实现

python 复制代码
class 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实现

python 复制代码
class 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实现

TypeScript 复制代码
function 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#实现

cs 复制代码
public 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实现

cpp 复制代码
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;
}

Go实现

Go 复制代码
func 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实现

Kotlin 复制代码
class 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实现

Swift 复制代码
class 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实现

rust 复制代码
impl 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实现

php 复制代码
class 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实现

Dart 复制代码
class 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实现

Scala 复制代码
object 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实现

Scala 复制代码
defmodule 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实现

Erlang 复制代码
xor_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实现

Erlang 复制代码
class 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
    }
}
相关推荐
源代码•宸10 分钟前
Leetcode—620. 有趣的电影&&Q3. 有趣的电影【简单】
数据库·后端·mysql·算法·leetcode·职场和发展
2301_8002561135 分钟前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle
一个不知名程序员www1 小时前
算法学习入门---结构体和类(C++)
c++·算法
XFF不秃头4 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
王老师青少年编程4 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
有为少年5 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法
Ven%5 小时前
从单轮问答到连贯对话:RAG多轮对话技术详解
人工智能·python·深度学习·神经网络·算法
山楂树の5 小时前
爬楼梯(动态规划)
算法·动态规划
谈笑也风生5 小时前
经典算法题型之复数乘法(二)
开发语言·python·算法