📖 Scenario: You are working on a simple app that manages a list of daily tasks. Sometimes, you want to rotate the tasks so that the first task moves to the end, and the others shift forward. This helps you change the order of tasks easily.
🎯 Goal: Build a small program that rotates an array of tasks to the left by a given number of positions using array rotation techniques.
📋 What You'll Learn
Create an array called tasks with exact string values.
Create a variable called rotateBy to specify how many positions to rotate.
Write a function called rotateArrayLeft that rotates the array to the left by rotateBy positions.
Print the rotated array.
💡 Why This Matters
🌍 Real World
Rotating arrays is useful in task scheduling, game development, and data processing where order changes dynamically.
💼 Career
Understanding array rotation helps in coding interviews and real-world programming tasks involving data manipulation.
Progress0 / 4 steps
1
Create the tasks array
Create an array called tasks with these exact string values in order: 'email', 'call', 'meeting', 'lunch', 'report'.
DSA Typescript
Hint
Use square brackets [] to create an array and separate values with commas.
2
Set the rotation count
Create a variable called rotateBy and set it to the number 2 to specify how many positions to rotate the array to the left.
DSA Typescript
Hint
Use const rotateBy = 2; to create the variable.
3
Write the rotation function
Write a function called rotateArrayLeft that takes two parameters: arr (an array of strings) and positions (a number). The function should return a new array rotated to the left by positions places. Use array slicing and concatenation inside the function.
DSA Typescript
Hint
Use arr.slice() to split the array and .concat() to join parts.
4
Print the rotated array
Call the function rotateArrayLeft with tasks and rotateBy as arguments. Print the returned rotated array using console.log.
DSA Typescript
Hint
Use console.log(rotatedTasks); to print the rotated array.
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
Step 1: Understand right rotation
Right rotation by 1 means the last element moves to the front, shifting others right.
Step 2: Apply to example array
Last element 4 moves to front, rest shift right: [4, 1, 2, 3].
Final Answer:
[4, 1, 2, 3] -> Option A
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
Step 1: Understand left rotation by 1
Left rotation by 1 means first element moves to the end.
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.
Final Answer:
arr.push(arr.shift()!) -> Option A
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?
arr.slice(-k) takes last 2 elements: [40, 50]. arr.slice(0, arr.length - k) takes first 3 elements: [10, 20, 30].
Step 2: Concatenate slices
Concatenating gives [40, 50, 10, 20, 30], which is right rotation by 2.
Final Answer:
[40, 50, 10, 20, 30] -> Option B
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
Step 1: Check arr.shift() return type
arr.shift() returns element or undefined if array empty. Here, no check for undefined.
Step 2: Effect on arr.push()
If arr.shift() returns undefined, arr.push(undefined) adds undefined to array, causing incorrect result or runtime issues.
Final Answer:
arr.shift() can return undefined, causing push(undefined) -> Option C
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
Step 1: Understand in-place rotation using reversal
Reversing parts of array and then whole array rotates left by k without extra space.
Step 2: Apply reversal steps
Reverse first k elements, reverse last n-k elements, then reverse entire array to get rotated array.
Final Answer:
Reverse first k, reverse last n-k, reverse whole array -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.