如何减少此代码的时间复杂度

时间:2016-07-22 12:01:34

标签: arrays ruby time-complexity

arr1是一个数组有3个元素第1个是arr2中的元素个数,第2个是无旋转的第3个是没有。输入。我想用户从给定的输入索引打印arry2的元素。第二个输入arry是输入数组包含数组元素。

arr1 =gets.strip.split(' ').map(&:to_i)
arr2 = gets.strip.split(' ').map(&:to_i)

q=arr1[2]
count= arr1[1]

count.times do
  arr2=arr2.reverse.rotate.reverse
end

for i in 0..q-1 do
  i = gets.strip.to_i
  puts "#{arr2[i]}\n"
end

1 个答案:

答案 0 :(得分:1)

rotate接受一个参数,该参数是要旋转的元素数。这个数字可以是负数,可以在另一个方向旋转,所以

count.times do
  arr2=arr2.reverse.rotate.reverse
end

在每次迭代时复制数组3次,可以替换为

arr2 = arr2.rotate(-count)