/**
*
* Ashish Patel
* e: ashishsushilPatel@gmail.com
* w: https://ashish.me
*
*/
/*
* Given an array, rotate the array to the right by k steps, where k is non-negative.
*
* Example 1:
*
* Input: [1,2,3,4,5,6,7] and k = 3
* Output: [5,6,7,1,2,3,4]
* Explanation:
* rotate 1 steps to the right: [7,1,2,3,4,5,6]
* rotate 2 steps to the right: [6,7,1,2,3,4,5]
* rotate 3 steps to the right: [5,6,7,1,2,3,4]
*/
function rotateArray(nums, k) {
k %= nums.length
function reverse(s, e) {
while (s < e) {
let temp = nums[s]
nums[s] = nums[e]
nums[e] = temp
s++
e--
}
}
reverse(0, nums.length - 1)
reverse(0, k - 1)
reverse(k, nums.length - 1)
return nums
}
test('rotate Array', () => {
expect(rotateArray([1, 2, 3, 4, 5, 6, 7], 3)).toEqual([5, 6, 7, 1, 2, 3, 4])
expect(rotateArray([-1], 2)).toEqual([-1])
})
Created 2020-04-11T23:13:06+00:00, updated 2020-04-16T21:26:07+00:00 · History · Edit