Тёмный

Rotate Matrix/Image by 90 Degrees | Brute - Optimal 

take U forward
Подписаться 679 тыс.
Просмотров 222 тыс.
50% 1

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 248   
@takeUforward
@takeUforward Год назад
Please watch our new video on the same topic: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Z0R2u6gd3GU.html
@rainyvideo6936
@rainyvideo6936 6 месяцев назад
It's a loop same video link
@rudraprasad8912
@rudraprasad8912 Год назад
The way you approach the problem.......It gives me the confidence that i can also do it!!!!!💀
@takeUforward
@takeUforward Год назад
Timestamps pleaseee. Let's march ahead, and create an unmatchable DSA course! ❤ Use the problem links in the description.
@iamvaibhav_10
@iamvaibhav_10 Год назад
notes link is not visible
@shra1
@shra1 Год назад
Love you brother, marching ahead consistently.
@alessandrocamilleri1239
@alessandrocamilleri1239 Год назад
Great explanation. I tried to come up with my solution prior to watching the video. I used the intuition of concentric squares within the matrix. I traverse one side of each concentric square and perform three swaps for each element . Since only one side of each concentric square is traversed, the number of elements traversed is approximately 1/4(m*n) and since there are 3 swaps for each element the time complexity will be O(3/4 m*n). Using a swap counter, Striver's solution is very close to O(m*n). However, unlike Striver, I do use some extra auxiliary constant space in the form of 4 pairs of co-ordinates which I use to determine the correct placing of the elements during swapping. void rotate(vector& m) { int l = 0; int h = m.size() - 1; pair a, b, c, d; while (l < h) { a = {l,l}; b = {l,h}; c = {h,h}; d = {h,l}; for (int i = l; i < h; i++) { swap (m[a.first][a.second], m[b.first][b.second]); swap (m[a.first][a.second], m[c.first][c.second]); swap (m[a.first][a.second], m[d.first][d.second]); a.second++; b.first++; c.second--; d.first--; } l++; h--; } }
@arjit1495
@arjit1495 3 месяца назад
Thanks. We can further improve by not using loop for reversing of row in optimal instead just use reverse after j loop is finished like this: for(int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++) { swap(mat[i][j], mat[j][i]); } reverse(mat[i].begin(), mat[i].end()); }
@sayantandey4708
@sayantandey4708 Год назад
I did this optimal solution on my own, then came to see the solution video, this sheet building my confidence and skills little by little. (Rikon was my childhood friend. He worked for you some days back. No wonder why he praised you so much.)
@JohnCena-uf8sz
@JohnCena-uf8sz Месяц назад
I am watching in sequence, the best explanation frrrr.. SOME ONE REMIND ME TO STUDY BY LIKING THE COMMENT
@anuragprasad6116
@anuragprasad6116 7 месяцев назад
I used the idea of concentric squares to solve the problem. Say, n = 6. Now the square will be of 3X3 size. You can draw a matrix to see how the outer square is of length = 6, inside it there's a square of side = 4 and inside it there's another square of side = 2. Basically each inside square is of 2 units lesser length then its outer square. We traverse from outside to inside and rotate each square one by one. For rotation, we traverse the upper side of the square and use 3 swaps for each grid. Also, the traversal is done till 2nd last grid because if you do the dry run, you'll notice that the last grid is already swapped in the first step, i.e., the corners are common between 2 given sides. The most difficult part is to deduce the co-ordinates for the replacing element. Imagine a square which you're traversing on its top side. Now, the top left element will be replaced by bottom left, bottom left by bottom right, bottom right by top right and top right by top left. It's hard to explain in a comment how I arrived at the co-ordinates but if someone wants to try this out, instead of swapping element by element, first try swapping row by row. I've attached codes for both. Basically, store the upper side of square in a temp array then replace top row with left column, replace left column with bottom row and so on. Once you understand how that's working, the co-ordinates for element by element swap is same but using lesser extra space. If someone needs a video explanation, do reply and I'll try to post a video explaining the same. // Swapping row by row: for (int i = 0; i < n/2; i++) { vector temp; for (int j = i; j < m-i; j++) temp.push_back(mat[i][j]); for (int j = m-i-1; j >= i; j--) mat[i][j] = mat[n-1-j][i]; for (int j = m-i-1; j >= i; j--) mat[n-1-j][i] = mat[n-1-i][m-1-j]; for (int j = m-i-1; j >= i; j--) mat[n-1-i][m-1-j] = mat[j][m-1-i]; for (int j = m-i-1; j >= i; j--) mat[j][m-1-i] = temp[j-i]; } // Swapping element by element int len = mat.size(); for (int i = 0; i < len/2; i++) { for (int j = i; j < (len-i-1); j++) { int temp = mat[i][j]; mat[i][j] = mat[len-1-j][i]; mat[len-1-j][i] = mat[len-1-i][len-1-j]; mat[len-1-i][len-1-j] = mat[j][len-1-i]; mat[j][len-1-i] = temp; } }
@MihirAnand-w2q
@MihirAnand-w2q 2 месяца назад
We can also find a pattern i.e. i -> j and then j -> n-i-1
@codedByAyush
@codedByAyush 3 месяца назад
Bhaiya, apka har solutions are just too OP and easy to understand 🔥🔥
@umeshkaushik710
@umeshkaushik710 Год назад
Thanks a lot bhaiya. This time I must say you are on fire. Your explaining capability is next level, bez I had problems in understanding the matrix(index and all). But Now super clear. OP Striver Guru 🔥🔥🔥🔥
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
#Free Education For All.. # Bhishma Pitamah of DSA...You could have earned in lacs by putting it as paid couses on udamey or any other elaerning portals, but you decided to make it free...it requires a greate sacrifice and a feeling of giving back to community, there might be very few peope in world who does this...."विद्या का दान ही सर्वोत्तम दान होता है" Hats Off to you man, Salute from 10+ yrs exp guy from BLR, India.
@Karansingh17373
@Karansingh17373 Месяц назад
we can also transpose as: for(int i=0;i
@coolestCatEver
@coolestCatEver 20 дней назад
bro I was able to come up with the brute force myself but the optimal solution is just too good and clever 😆
@Manishgupta200
@Manishgupta200 Год назад
Best optimal explaination with in depth time complexity. Great. I do by myself with rotated by anti-clockwise and clockwise both. THankyou
@brajeshmohanty2558
@brajeshmohanty2558 Год назад
now I understood why bhai chose c++ over java because u have to write so many function in java but in c++ u have stl :( . But bro i understood the question thanku :b
@chinmay6152
@chinmay6152 Год назад
Understood. Thank you for this amazing content. I have tried many lectures but the way you approach the problem it seems extremely easy.
@Krishnayadav-fu3uv
@Krishnayadav-fu3uv Год назад
very well understood, thank you for the great content ❤
@Ancientinsights002
@Ancientinsights002 Год назад
best DSA sheet ever you are the god of DSA really
@suyashshinde2971
@suyashshinde2971 Год назад
SDE Sheet Day 2 Problem 1 Done!
@mlkgpta2869
@mlkgpta2869 Год назад
Nice explaination, the best part is that you teach how to build your mind to think in that way.....
@mind9889
@mind9889 2 месяца назад
I also came up with the transpose approach very happy 😁😁
@nitinpatel9259
@nitinpatel9259 Год назад
Brother you are awesome. The way you give the solutions of the problems and it very helpful for me to explain whole code(dry and run).🙏🙏
@curs3m4rk
@curs3m4rk 6 месяцев назад
I never thought, this question was that simple :( Understood Striver, Thanks
@16_AIML_ABHYAMSHAW
@16_AIML_ABHYAMSHAW Месяц назад
We don't need to use another loop for reverse() , we can simply add the reverse() after every inner loop ends but within outer loop.
@cleweric
@cleweric 27 дней назад
an approach i came up with, if you need to rotate clockwise, just swap elements at each layer anticlockwise void rotate(vector& matrix) { int n = matrix.size(); for(int i=0; i
@ManognasaiSurineniManu
@ManognasaiSurineniManu 3 месяца назад
Understood Thank you for this amazing lecture sir.
@khanra17
@khanra17 8 месяцев назад
9:54 We do transpose not because we need to convert rows into column. If we have a another matrix to store then we can do it directly instead of two steps. we do it so that we can swap elements. you can't do it directly. so do the extra step
@ryanmathew6397
@ryanmathew6397 Год назад
so amazing watching your videos and getting to know how one should change there mind to observe the problem.
@cinime
@cinime Год назад
Understood! Amazing explanation as always, thank you very much for your effort!!
@abhijeetmishra3804
@abhijeetmishra3804 11 месяцев назад
Bhaiya ur amazing . How can one explain with soo much perfection man. Live long and keep making videos for us . Hope to meet you soon .
@CodingEnv
@CodingEnv Год назад
I wish , I would have seen this video before makemytrip interview.. Thank you for great content.
@aryanmandi7748
@aryanmandi7748 7 месяцев назад
they ask to complete the func in interview or just write pseudo code
@vidushibhardwaj1415
@vidushibhardwaj1415 5 месяцев назад
thankyou so muxh for these videos❤❤... and the problem link added is a different question, but in your dsa sheet its same
@jatinsharma1595
@jatinsharma1595 9 месяцев назад
Understood. Thank you Striver
@RituSingh-ne1mk
@RituSingh-ne1mk 9 месяцев назад
Understood!
@riyadhossain1706
@riyadhossain1706 Год назад
How you elaborate on the problem and solution is unique to any other free content I have gone through. I'll surely gonna recommend your channel if somebody asks.
@nikhilrajput5820
@nikhilrajput5820 Год назад
thanks you sir, i easily understand how to transpose matrix inplace.
@neilkapadia7
@neilkapadia7 8 месяцев назад
Understood! Amazing explanation!
@Mohammad46552
@Mohammad46552 9 месяцев назад
understood
@ast_karan128
@ast_karan128 4 месяца назад
for left rotate the matrix to 90 degree just reverse the columns instead of rows and done
@yhbarve
@yhbarve Год назад
Hey Striver, the problem link and the video link doesn't match in the SDE sheet, please get it updated...
@computer_tech98
@computer_tech98 9 месяцев назад
Thank you
@rishipandey123
@rishipandey123 8 месяцев назад
Wow sir amazing and super easy explanation ❤❤❤😊
@getakashverma19
@getakashverma19 5 месяцев назад
hi, the solution provided in the sheet for java doesn't follow the same explanation, the logic is bit changed in it. Here, is the code following the explanation: class Solution { public void rotate(int[][] matrix) { int n = matrix.length, m = matrix[0].length; //Transpose for(int i =0; i
@mariia-travels
@mariia-travels Год назад
Thank you for work you do. Really helpful!
@sarangkumarsingh7901
@sarangkumarsingh7901 6 месяцев назад
Awesome Lecture Sir.................
@HARSHA_27
@HARSHA_27 10 месяцев назад
understood!!🙇‍♂
@culeforever5408
@culeforever5408 11 месяцев назад
understood 🚴‍♂
@gautamsaxena4647
@gautamsaxena4647 10 дней назад
understood bhaiya
@satyasegu3566
@satyasegu3566 Год назад
striver so happy to learn with youuh
@AkOp-bf9vm
@AkOp-bf9vm 4 месяца назад
i think swap part of optimal approach take time complexity of O(N * N/2) bcz first loop is running for n times and second N/2 times
@ksankethkumar7223
@ksankethkumar7223 Год назад
TC for the first 2 nested for loops would be O(N*N/2) in my point of view?!
@utsavseth6573
@utsavseth6573 Год назад
Beautifully explained.
@aarishfaiz7880
@aarishfaiz7880 11 месяцев назад
Sir app bhut accha Padhte hoo.
@rakshitrabugotra8354
@rakshitrabugotra8354 3 месяца назад
Hi bro! I came across this problem and the first two operations on my mind were transpose and reverse. As the problem requried it to be solved in O(1) space, I carefully examined if the sequence of these operations made any signifcant changes to the performance. What I did was to reverse the matrix (row-wise) first, then take a transpose. The first operation used n/2 iterations (for optimal reversing). The second operation used n*(n+1)/2 iterations (for optimal transpose). So the total number of iterations with optimization: (n(n + 1) + n)/2 = O(n^2 + n) = O(n^2) With transpose first and then reverse each row: (n(n+1) + n^2)/2 = O(n^2 + n^2) = O(n^2) It doesn't make a difference as our PCs are blazzingly fast, but I found it neat :) Thanks a lot! This series is amazing!♥♥
@oyeesharme
@oyeesharme 12 дней назад
thank you bhaiya
@tamilmukbang3789
@tamilmukbang3789 5 месяцев назад
understood. thank you so much bro
@technicaldoubts5227
@technicaldoubts5227 Год назад
understood very well !
@ddevarapaga5134
@ddevarapaga5134 2 месяца назад
Superb UNderstood
@ghayoorhussain8930
@ghayoorhussain8930 Год назад
Java Code: ```class Solution { public void rotate(int[][] matrix) { int n = matrix.length; // Transpose of Matrix for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } // Reverse each row for (int i = 0; i < n; i++) { int left = 0, right = n - 1; while (left < right) { int temp = matrix[i][left]; matrix[i][left] = matrix[i][right]; matrix[i][right] = temp; left++; right--; } } } }```
@ishanjindal9001
@ishanjindal9001 Год назад
thanks
@_4p_
@_4p_ 20 дней назад
God bless you man
@rashi1662
@rashi1662 11 месяцев назад
this is how I wrote the transpose code for(int i=0; i< n ; i++){ for(int j=i; j < n; j++){ swap(matrix[i][j], matrix[j][i]); } } which is less confusing
@ast_karan128
@ast_karan128 4 месяца назад
bro this code is not optimal, because it this code u will traverse through all elements, and the code in the video is not traversing the diagonal element which reduce the time complexity
@rashi1662
@rashi1662 4 месяца назад
@@ast_karan128 thanks for pointing that out bro 🤜
@mr_weird3680
@mr_weird3680 5 месяцев назад
Thank you very much brother🙇
@DeepakKumar-oz5ky
@DeepakKumar-oz5ky 9 месяцев назад
Thank u Bhaiya Very helpFul video
@mohitsingh13
@mohitsingh13 Месяц назад
Understood ❤
@konankikeerthi
@konankikeerthi 3 месяца назад
Understood bro. Thank you
@HassanAbbas-wy7wj
@HassanAbbas-wy7wj 23 дня назад
marvellous
@DesiGodOfWar
@DesiGodOfWar 5 месяцев назад
great explanation
@hemantpatel1413
@hemantpatel1413 3 месяца назад
Understood.
@naramsettiyedukondalu4182
@naramsettiyedukondalu4182 6 месяцев назад
Try using slicing method
@NazeerBashaShaik
@NazeerBashaShaik 6 месяцев назад
Understood, thank you.
@aman_singh__
@aman_singh__ Год назад
TIMESTAMPS 00:49 Problem statement 2:06 Observation 2:24 Brute force approach 6:25 Brute force code 7:49 Optimized approach 14:00 pseudo code for transposition 15:01 Optimized approach code
@harshilsutariya1793
@harshilsutariya1793 Год назад
your dedication 🙌🙌
@divyanshthakur2026
@divyanshthakur2026 Год назад
Happy Ram Navami Everyone 🚩
@_hulk748
@_hulk748 Год назад
Great Explanation❤🙇‍♂✨🙏
@callmesumant
@callmesumant 14 дней назад
understood.
@alheraahmad5481
@alheraahmad5481 Месяц назад
understood!
@samuelfrank1369
@samuelfrank1369 7 месяцев назад
Understood. Thanks a lot
@per.seus._
@per.seus._ Год назад
understood❤
@kushagramishra5638
@kushagramishra5638 Год назад
understood!
@SYCOA12CHAITANYAASOLE
@SYCOA12CHAITANYAASOLE 4 месяца назад
Understood !!
@infernogamer52
@infernogamer52 Год назад
Understood bhaiya!
@samitkumar18
@samitkumar18 4 месяца назад
Understand
@arnavkumar4631
@arnavkumar4631 19 дней назад
Understood
@khalasianiket816
@khalasianiket816 2 месяца назад
understood❤
@KartikeyTT
@KartikeyTT 2 месяца назад
tysm sir
@dayashankarlakhotia4943
@dayashankarlakhotia4943 Год назад
Understood very well
@ABISHEK-r7k
@ABISHEK-r7k 5 месяцев назад
UNDERSTOOD SIR
@shobhitsrivastava1223
@shobhitsrivastava1223 Год назад
Understood❤
@rahuljmd
@rahuljmd Год назад
Understood, thanks💚
@heyOrca2711
@heyOrca2711 6 месяцев назад
Understood! Sir
@elmo4672
@elmo4672 5 месяцев назад
trying to pass first year of college : ( thank you : )
@sarthak4989
@sarthak4989 6 месяцев назад
understood ❤💘
@SatendraChauhan-ke5yr
@SatendraChauhan-ke5yr 5 месяцев назад
thankyou so much sir
@ayushdhiman9378
@ayushdhiman9378 Год назад
i think the time complexity of the optimal should be O(N) * O(N/2) + O(N) * O(N/2)
@thelightoffight7881
@thelightoffight7881 9 месяцев назад
How is N/2 brother i don't understand can you explain
@theornament
@theornament 7 месяцев назад
I thought that too. For the first loop, we still have to go through all of the rows except last one, which would be O(n). Now, for each row you go through, you will go through n - (i + 1) columns, which theoretically means you go through the later half of our matrix. This is why it is calculated as n/2. Then, when we loop through the rows and reverse them, we say we go through n rows and for each row we have to go loop through it to reverse them, which with the algorithm provided by Striver, it takes n/2. So, the answer would be in fact O(n * n/2) + O(n * n/2), which in simpler terms is O(n^2/2).
@karanhaldar755
@karanhaldar755 6 месяцев назад
great job bro
@HarchitGulati
@HarchitGulati Год назад
one doubt if we have to space optimise why are we not swapping the elements in the same brute force aprroach instead of creating extra dp
@venup2813
@venup2813 Год назад
understood
@NonameNoname-f2t
@NonameNoname-f2t 7 месяцев назад
UNDERSTOOD
@Sameer-wm8dn
@Sameer-wm8dn 2 месяца назад
I didn’t understand how is the time complexity N/2 * N/2 for the first part
@rashiqajameel7822
@rashiqajameel7822 8 месяцев назад
excellent!
Далее
Spiral Traversal of a Matrix | Spiral Matrix
16:33
Просмотров 214 тыс.
Истории с сестрой (Сборник)
38:16
10 Math Concepts for Programmers
9:32
Просмотров 1,9 млн
Count Subarray sum Equals K | Brute - Better -Optimal
24:09
Rotate Matrix by 90 degrees clockwise | Rotate Image
8:23
Premature Optimization
12:39
Просмотров 809 тыс.
before you code, learn how computers work
7:05
Просмотров 368 тыс.
How I would learn Leetcode if I could start over
18:03
Просмотров 543 тыс.
Please Master These 10 Python Functions…
22:17
Просмотров 163 тыс.
8 patterns to solve 80% Leetcode problems
7:30
Просмотров 372 тыс.
Истории с сестрой (Сборник)
38:16