DEV Community

Tanvir Rahman
Tanvir Rahman

Posted on

 

Rotate Image - Daily JS (Day 21)

Problem Statement
You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).

You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

Examples
Example 1:
mat1

Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [[7,4,1],[8,5,2],[9,6,3]]
Enter fullscreen mode Exit fullscreen mode

Example 2:
Mat2

Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
Enter fullscreen mode Exit fullscreen mode

Constraints:

n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000
Enter fullscreen mode Exit fullscreen mode

Solution

const rotate = (matrix) => {
  matrix.reverse();
  const n = matrix.length;
  // transpose
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < i; j++) {
      [matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
    }
  }
};
Enter fullscreen mode Exit fullscreen mode

LeetCode issue:
https://leetcode.com/problems/rotate-image/

I hope you are enjoying the series, if yes then don't forget to press ❤️ and Follow. You can also bookmark it for later use. If you have any queries or suggestions don't hesitate to drop them.
Thanks will see you in next post.

Top comments (0)

11 Tips That Make You a Better Typescript Programmer

1 Think in {Set}

Type is an everyday concept to programmers, but it’s surprisingly difficult to define it succinctly. I find it helpful to use Set as a conceptual model instead.

#2 Understand declared type and narrowed type

One extremely powerful typescript feature is automatic type narrowing based on control flow. This means a variable has two types associated with it at any specific point of code location: a declaration type and a narrowed type.

#3 Use discriminated union instead of optional fields

...

Read the whole post now!