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

目录

数组异或操作

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
    }
}
相关推荐
Dylan的码园33 分钟前
ArrayList与顺序表
java·数据结构·链表
2301_8079973834 分钟前
代码随想录-day55
数据结构·c++·算法
别动哪条鱼3 小时前
AAC ADTS 帧结构信息
网络·数据结构·ffmpeg·音视频·aac
Zsy_0510039 小时前
【数据结构】二叉树OJ
数据结构
程序员东岸10 小时前
《数据结构——排序(中)》选择与交换的艺术:从直接选择到堆排序的性能跃迁
数据结构·笔记·算法·leetcode·排序算法
程序员-King.10 小时前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法
牢七11 小时前
数据结构11111
数据结构
神仙别闹11 小时前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
Ayanami_Reii11 小时前
进阶数据结构应用-一个简单的整数问题2(线段树解法)
数据结构·算法·线段树·延迟标记