我是靠谱客的博主 鳗鱼项链,最近开发中收集的这篇文章主要介绍【力扣】【初级算法】【数组11】旋转图像,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

旋转图像
给定一个 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】旋转图像所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部