在Ruby中,最快实现xor 2整数的方法是什么?
给定一个由n个元素组成的数组,我应该将在Ruby中,最快实现xor 2整数的方法是什么?,ruby,algorithm,performance,xor,Ruby,Algorithm,Performance,Xor,给定一个由n个元素组成的数组,我应该将a[I]替换为a[I]XOR a[I+1],将a[n-1]的值替换为a[n-1]XOR a[0]达m次。m的值可能达到10^18。什么是最快和最好的方法 n, m = gets.chomp.split(" ").map &:to_i arr = gets.chomp.split(" ") m -= 1 m.times do brr = arr.dup i = 0.to_i for i in 0..n-2 brr[i] = (arr
a[I]
替换为a[I]XOR a[I+1]
,将a[n-1]
的值替换为a[n-1]XOR a[0]
达m次。m的值可能达到10^18。什么是最快和最好的方法
n, m = gets.chomp.split(" ").map &:to_i
arr = gets.chomp.split(" ")
m -= 1
m.times do
brr = arr.dup
i = 0.to_i
for i in 0..n-2
brr[i] = (arr[i].to_i ^ arr[i+1].to_i)
end
brr[n-1] = (arr[n-1].to_i ^ arr[0].to_i)
arr = brr.dup
p arr
puts ""
end
是否有一个更快的方法来计算XOR值而不是^运算符?
< P>不要用特定的数字来考虑它,并考虑<代码> > :的基本数学规则。一旦你看到了这个模式,Ruby可能会非常方便(并且提供了一个非常快速的解决方案)。写10^18行代码。
a[i]^a[i+1]
当i
是数组中的最后一个索引时是什么意思?您需要指定边界条件。在Ruby中,如果数组a
具有n
元素,则没有元素a[n]
。数组索引从零开始。在ruby中对两个整数进行异或运算的最快方法是使用异或运算符:a^b
@SergioTulentsev OP已经知道了,从提供的代码判断。我很确定OP的讲师希望这个课程应用XOR的数学特性来观察一个模式,这个模式将在不需要进行所有迭代的情况下出现。我敢说它可能与模m
模n
有关吗?