您的位置:首页 > 其它

记录下自己拙计的算法之旅 LeetCode Rotate Array

2015-04-12 20:56 106 查看
记录下自己拙计的算法之旅

**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,更拙计 = =
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: