Note: Try to solve this task in-place (with O(1) additional memory), since this is what you'll be asked to do during an interview.
You are given an n x n 2D matrix that represents an image. Rotate the image by 90 degrees (clockwise).
Example
For
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] the output should be
rotateImage(a) = [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
This is my code *
std::vector<std::vector<int>>
rotateImage(std::vector<std::vector<int>> a) {
int size=a.size();
int tmp1=0,tmp2=0,tmp3=0;
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
tmp3=a[size-1-j][i];
tmp2=a[size-1-i][size-1-j];
tmp1=a[j][size-1-i];
a[j][size-1-i]=a[i][j];
a[size-1-i][size-1-j]=tmp1;
a[size-1-j][i]=tmp2;
a[i][j]=tmp3;
tmp1=0;
tmp2=0;
tmp3=0;
}
}
for (int i = 0; i < a.size(); i++)
{ //displaying
for (int j = 0; j < a[i].size(); j++)
cout << a[i][j] << " ";
cout << endl;
}
}
expected output=[[7, 4, 1],
[8, 5, 2],
[9, 6, 3]]
but its showing a segmentation fault
*** Error in `main': munmap_chunk(): invalid pointer:
0x0000000000400ae0
***
======= Backtrace: =========
/lib64/libc.so.6(+0x7c91c)[0x7f9f833ac91c]
/ lib64/libc.so.6(cfree+0x12c)[0x7f9f833bd0cc]
main[0x40238a]
main[0x402019]
main[0x401b22]
main[0x401575]
main[0x401287]
main[0x402524]
main[0x4021a2]
main[0x401d5b]
main[0x40187f]
main[0x40138d]
main[0x400f89]
/lib64/libc.so.6(__libc_start_main+0xea)[0x7f9f833504da]
main[0x400a3a]