美文网首页
IOS 算法(基础篇) ----- 判断矩阵经轮转后是否一致

IOS 算法(基础篇) ----- 判断矩阵经轮转后是否一致

作者: ShawnAlex | 来源:发表于2021-06-10 11:30 被阅读0次

    给你两个大小为 n x n 的二进制矩阵 mat 和 target 。现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 ,如果能够使 mat 与 target 一致,返回 true ;否则,返回 false 。
    n == mat.length == target.length
    n == mat[i].length == target[i].length
    1 <= n <= 10
    mat[i][j] 和 target[i][j] 不是 0 就是 1

    建议先做一下: IOS 算法(中级篇) ----- 旋转图像

    例子

    例子1

    输入:mat = [[0,1],[1,0]], target = [[1,0],[0,1]]
    输出:true
    解释:顺时针轮转 90 度一次可以使 mat 和 target 一致。

    例子2

    输入:mat = [[0,1],[1,1]], target = [[1,0],[0,1]]
    输出:false
    解释:无法通过轮转矩阵中的元素使 equal 与 target 一致。

    例子3

    输入:mat = [[0,0,0],[0,1,0],[1,1,1]], target = [[1,1,1],[0,1,0],[0,0,0]]
    输出:true
    解释:顺时针轮转 90 度两次可以使 mat 和 target 一致。

    解题思路

    解题思路

    建议先做一下 48. 旋转图像

    看个例子

    1, 2, 3 (A[0][0], A[0][1], A[0][2])
    4, 5, 6 (A[1][0], A[1][1], A[1][2])
    7, 8, 9 (A[2][0], A[2][1], A[2][2])

    7, 4, 1 (A[2][0], A[1][0], A[0][0])
    8, 5, 2 (A[2][1], A[1][1], A[0][1])
    9, 6, 3 (A[2][2], A[1][2], A[0][2])

    其实可以看出规律, 90度转换后, 原来的A[i][j] → A[j][matrix.count - 1 - i]

    按照这个规律, 我们依次旋转90, 180, 270判断, 目标target是否与旋转数组相等即可

    代码:

        func findRotation(_ mat: [[Int]], _ target: [[Int]]) -> Bool {
            
            if mat == target { return true }
            var time = 1, temp = mat
            
            while time < 4 {
                temp = cal(temp)
                if target == temp { return true }
                time += 1
            }
            
            return false
        }
        
        func cal(_ matrix: [[Int]]) -> [[Int]] {
         
            var temp = Array(repeating: Array(repeating: 0, count: matrix.count), count: matrix.count)
            
            for i in 0..<matrix.count {
                for j in 0..<matrix[i].count {
                    temp[j][matrix.count - 1 - i] = matrix[i][j]
                }
            }
            
            return temp
        }
    
    

    题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
    IOS 算法合集地址

    相关文章

      网友评论

          本文标题:IOS 算法(基础篇) ----- 判断矩阵经轮转后是否一致

          本文链接:https://www.haomeiwen.com/subject/pdyueltx.html