Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Array Rotation Techniques in DSA Typescript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to rotate the array to the right by one position.

DSA Typescript
function rotateRightByOne(arr: number[]): number[] {
  const last = arr[arr.length [1] 1];
  for (let i = arr.length - 1; i > 0; i--) {
    arr[i] = arr[i - 1];
  }
  arr[0] = last;
  return arr;
}
Drag options to blanks, or click blank then click option'
A-
B+
C*
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using + instead of - causes out-of-bound error.
Using * or / is incorrect for indexing.
2fill in blank
medium

Complete the code to rotate the array to the left by one position.

DSA Typescript
function rotateLeftByOne(arr: number[]): number[] {
  const first = arr[0];
  for (let i = 0; i < arr.length - 1; i++) {
    arr[i] = arr[i [1] 1];
  }
  arr[arr.length - 1] = first;
  return arr;
}
Drag options to blanks, or click blank then click option'
A/
B-
C*
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using - instead of + causes wrong indexing.
Using * or / is invalid for array indices.
3fill in blank
hard

Fix the error in the code to rotate the array right by k positions using reversal.

DSA Typescript
function reverse(arr: number[], start: number, end: number): void {
  while (start < end) {
    const temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
    start++;
    end--;
  }
}

function rotateRightByK(arr: number[], k: number): number[] {
  k = k [1] arr.length;
  reverse(arr, 0, arr.length - 1);
  reverse(arr, 0, k - 1);
  reverse(arr, k, arr.length - 1);
  return arr;
}
Drag options to blanks, or click blank then click option'
A/
B%
C*
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using division or multiplication instead of modulo.
Not adjusting k when it exceeds array length.
4fill in blank
hard

Fill both blanks to create a function that rotates the array left by k positions using slicing.

DSA Typescript
function rotateLeftByK(arr: number[], k: number): number[] {
  k = k [1] arr.length;
  return arr.slice(k).[2](arr.slice(0, k));
}
Drag options to blanks, or click blank then click option'
A%
Bconcat
Cpush
Dpop
Attempts:
3 left
💡 Hint
Common Mistakes
Using push or pop instead of concat.
Not using modulo for k.
5fill in blank
hard

Fill all three blanks to implement a function that rotates the array right by k positions using unshift and pop.

DSA Typescript
function rotateRightByKUsingPop(arr: number[], k: number): number[] {
  k = k [1] arr.length;
  for (let i = 0; i < k; i++) {
    const last = arr.[2]();
    arr.[3](last);
  }
  return arr;
}
Drag options to blanks, or click blank then click option'
A%
Bpop
Cunshift
Dshift
Attempts:
3 left
💡 Hint
Common Mistakes
Using shift instead of pop.
Using push instead of unshift.
Not using modulo for k.

Practice

(1/5)
1. What does rotating an array to the right by 1 position mean?
Example: [1, 2, 3, 4] rotated right by 1 becomes?
easy
A. [4, 1, 2, 3]
B. [2, 3, 4, 1]
C. [1, 2, 3, 4]
D. [3, 4, 1, 2]

Solution

  1. Step 1: Understand right rotation

    Right rotation by 1 means the last element moves to the front, shifting others right.
  2. Step 2: Apply to example array

    Last element 4 moves to front, rest shift right: [4, 1, 2, 3].
  3. Final Answer:

    [4, 1, 2, 3] -> Option A
  4. Quick Check:

    Right rotate by 1 = last element front [OK]
Hint: Right rotate by 1 means last element moves front [OK]
Common Mistakes:
  • Confusing right rotation with left rotation
  • Not moving the last element to front
  • Shifting elements incorrectly
2. Which of the following TypeScript code snippets correctly rotates an array arr to the left by 1 position?
easy
A. arr.push(arr.shift()!)
B. arr.unshift(arr.pop()!)
C. arr.pop(); arr.unshift(arr.pop()!)
D. arr.shift(); arr.push(arr.shift()!)

Solution

  1. Step 1: Understand left rotation by 1

    Left rotation by 1 means first element moves to the end.
  2. Step 2: Check code snippets

    arr.push(arr.shift()!) uses arr.shift() to remove first element and arr.push() to add it at end, correct for left rotation.
  3. Final Answer:

    arr.push(arr.shift()!) -> Option A
  4. Quick Check:

    Left rotate = shift then push [OK]
Hint: Left rotate by 1 = remove first, add to end [OK]
Common Mistakes:
  • Using pop instead of shift for left rotation
  • Using unshift with pop for left rotation
  • Calling shift or pop twice incorrectly
3. What is the output of the following TypeScript code?
const arr = [10, 20, 30, 40, 50];
const k = 2;
const rotated = arr.slice(-k).concat(arr.slice(0, arr.length - k));
console.log(rotated);
medium
A. [50, 10, 20, 30, 40]
B. [40, 50, 10, 20, 30]
C. [20, 30, 40, 50, 10]
D. [30, 40, 50, 10, 20]

Solution

  1. Step 1: Understand slicing for rotation

    arr.slice(-k) takes last 2 elements: [40, 50]. arr.slice(0, arr.length - k) takes first 3 elements: [10, 20, 30].
  2. Step 2: Concatenate slices

    Concatenating gives [40, 50, 10, 20, 30], which is right rotation by 2.
  3. Final Answer:

    [40, 50, 10, 20, 30] -> Option B
  4. Quick Check:

    Right rotate by 2 = last 2 front [OK]
Hint: Right rotate by k = last k elements + rest [OK]
Common Mistakes:
  • Using slice with wrong indices
  • Confusing left and right rotation
  • Not concatenating slices in correct order
4. Find the error in this TypeScript function that rotates an array to the left by k positions:
function rotateLeft(arr: number[], k: number): number[] {
  for (let i = 0; i < k; i++) {
    arr.push(arr.shift());
  }
  return arr;
}
medium
A. arr.push() should be arr.unshift()
B. Loop should run from i = 1 to k
C. arr.shift() can return undefined, causing push(undefined)
D. Function should return void, not number[]

Solution

  1. Step 1: Check arr.shift() return type

    arr.shift() returns element or undefined if array empty. Here, no check for undefined.
  2. Step 2: Effect on arr.push()

    If arr.shift() returns undefined, arr.push(undefined) adds undefined to array, causing incorrect result or runtime issues.
  3. Final Answer:

    arr.shift() can return undefined, causing push(undefined) -> Option C
  4. Quick Check:

    shift may be undefined, must check [OK]
Hint: Check shift() return before push to avoid undefined [OK]
Common Mistakes:
  • Ignoring undefined from shift()
  • Wrong loop range assumptions
  • Confusing push and unshift methods
5. Given an array arr of length n, how can you rotate it to the left by k positions efficiently without using extra space? Choose the correct approach.
hard
A. Use a temporary array to store first k elements, then shift rest left, then copy temp at end
B. Sort the array and then rotate by k positions
C. Rotate one by one k times using shift and push
D. Reverse first k elements, reverse last n-k elements, then reverse whole array

Solution

  1. Step 1: Understand in-place rotation using reversal

    Reversing parts of array and then whole array rotates left by k without extra space.
  2. Step 2: Apply reversal steps

    Reverse first k elements, reverse last n-k elements, then reverse entire array to get rotated array.
  3. Final Answer:

    Reverse first k, reverse last n-k, reverse whole array -> Option D
  4. Quick Check:

    Reversal method = in-place left rotate [OK]
Hint: Use triple reversal for in-place left rotation [OK]
Common Mistakes:
  • Using extra array when not needed
  • Rotating one by one causing O(n*k) time
  • Sorting array unrelated to rotation
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard