DEV Community

King coder
King coder

Posted on

Day 38 of DSA Problem Solving

Approach 1

Screenshot at 2025-08-30 14-47-54.png

Approach

Complexity

1. Time complexity: O(n)

2. Space complexity: O(1)

Code

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */

var rotate = function(nums, k) {
  let len = nums.length;
  k = k % len; 

  reverse(nums, 0, len - 1)
  reverse(nums,  0, k - 1)

  reverse(nums,  k  , len - 1)

  return nums
};
function reverse(nums, start, end) {
  while(start < end){
    let temp = nums[start]
     nums[start] = nums[end]
     nums[end] = temp;
     start++;
     end--;
  }

}
Enter fullscreen mode Exit fullscreen mode

Approach 2

Given an array nums and an integer k, rotate the array to the right by k steps. Do not return anything, modify the array in-place instead.

Screenshot at 2025-08-30 16-24-12.png

Approach:

1. Input Handling:

  • We are provided with an array nums and an integer k, where k represents the number of positions to rotate the array to the right.

2. Modifying k:

  • The rotation of an array by its length results in the same array. Hence, if k is greater than the length of the array, we reduce it to k % len(nums) to avoid unnecessary rotations.

3. Dividing the Array:

  • First Part:

    • We split the array into two parts:
    • The first part consists of the first len(nums) - k elements, which will eventually move to the back of the array.
    • Example: For nums = [1, 2, 3, 4, 5, 6, 7] and k = 3, the first part will be [1, 2, 3, 4].
  • Second Part:

    • The second part consists of the last k elements, which will be moved to the front after the rotation.
    • Example: For nums = [1, 2, 3, 4, 5, 6, 7] and k = 3, the second part will be [5, 6, 7].

4. Concatenating the Parts:

  • After splitting the array, we concatenate the second part with the first part:
    • Example: [5, 6, 7] + [1, 2, 3, 4] = [5, 6, 7, 1, 2, 3, 4].

5. Reassigning to nums:

  • Since the problem requires in-place modification, we will overwrite the original array nums by updating its elements in place with the concatenated result.

The algorithm modifies the original array without creating a new one.

6. Result:

  • After performing the above steps, the array nums is rotated by k positions to the right, and no new array is returned. The rotation happens in-place.

Complexity

  • Time complexity: O(n)

  • Space complexity: O(1)

Code

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */


var rotate = function(nums, k) {
  let len = nums.length;
  k = k % len; 
  let First_Part = nums.slice(0, len - k)
  let Second_Part =  nums.slice(len - k, len + k)
  const rotated = Second_Part.concat(First_Part);

    for (let i = 0; i < nums.length; i++) {
        nums[i] = rotated[i];
    }
    return nums
};
Enter fullscreen mode Exit fullscreen mode

Top comments (0)