记录下自己拙计的算法之旅
**LeetCode
Rotate Array:**
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
语言 ruby
def rotate(nums, k)
num_cp = nums.clone
pos = k % nums.length
start_pos = 0
nums.length.times do
nums[pos] = num_cp[start_pos]
start_pos += 1
pos += 1
pos %= nums.length
end
end
空间复杂度为O(n),时间复杂度O(n),拙计~~
另一种方法
def rotate2 nums, k
nums_length = nums.length
k = k % nums_length
return if k == 0 || nums_length == 1
k.times do
temp = nums[nums_length-1]
point = nums_length-1
point.times do
nums[point] = nums[point-1]
point -= 1
end
nums[0] = temp
end
end
但是时间复杂度为O(n^2),空间为O(1),直接Time Limit Exceeded,更拙计 = =