文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
旋转图像
解题思路
两次翻转。
matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
先根据水平轴翻转得到:
[[15,14,12,16],[13,3,6,7],[2,4,8,10],[5,1,9,11]]
再根据主对角线翻转得到:
[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
代码实现
/**
Do not return anything, modify matrix in-place instead.
*/
const rotate = (matrix: number[][]): void => {
const n: number = matrix.length;
for (let i = 0; i < Math.floor(n / 2); ++i) {
for (let j = 0; j < n; ++j) {
[matrix[i][j], matrix[n - i - 1][j]] = [
matrix[n - i - 1][j],
matrix[i][j],
];
}
}
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]];
}
}
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论