概述
题目
旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnhhkv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
思路
class Solution {
public void rotate(int[][] matrix) {
//旋转图像 注意不让开辟新数组
//以左上角为例,左上角元素旋转后会到右上角,右上角的元素会到右下角,右下角会去左下角。
//所以旋转要注意的就是赋值时避免覆盖掉原本的值,所以我们就需要转一圈赋值
//转一圈赋值 注意只需要遍历一般,因为另一半在避免覆盖的时候已经对他进行了操作
int n = matrix.length;
//偶数直接除二就是一半,奇数除二会把最中间的漏掉,但是最中间的也刚好不需要旋转。
for(int i=0;i<n/2;i++){
for(int j=0;j<(n+1)/2;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1]=temp;
}
}
}
}
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
n = len(matrix)
for i in range(n/2):
for j in range((n+1)/2):
temp = matrix[i][j]
matrix[i][j] = matrix[n-j-1][i]
matrix[n-j-1][i] = matrix[n-i-1][n-j-1]
matrix[n-i-1][n-j-1] = matrix[j][n-i-1]
matrix[j][n-i-1] = temp
最后
以上就是鳗鱼项链为你收集整理的【力扣】【初级算法】【数组11】旋转图像的全部内容,希望文章能够帮你解决【力扣】【初级算法】【数组11】旋转图像所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复