Swift 5中如何判断二维数组[[Int]]是否为M×M矩阵而非M×N
判断[[Int]]是否为M×M矩阵的方法
嗨,我明白你的困扰——arr.count只能拿到外层数组的子数组数量,但没法验证每个子数组的长度是否和这个数量一致对吧?别担心,我们只需要简单两步就能搞定这个判断:
核心思路
- 先获取外层数组的长度,也就是矩阵的行数
M; - 检查每一个子数组的长度是否都等于M——如果全部满足,那就是M×M的方阵,否则就是M×N的非方阵。
Swift 实现代码
这里给你写一个简洁的工具函数,直接就能用:
func isSquareMatrix(_ arr: [[Int]]) -> Bool { let matrixSize = arr.count // 使用allSatisfy遍历所有子数组,验证长度是否统一等于matrixSize return arr.allSatisfy { $0.count == matrixSize } }
测试用例验证
我们用你提到的例子测试一下:
- 正确的3×3矩阵:
isSquareMatrix([[1,2,3],[4,5,6],[7,8,9]])→ 返回true - 非方阵例子:
isSquareMatrix([[1,2,3],[4,5],[6,7,8,9]])→ 返回false - 边界情况:空数组
isSquareMatrix([])→ 返回true(0×0也属于方阵);单个元素数组isSquareMatrix([[5]])→ 返回true(1×1方阵)
这个方法既高效又清晰,allSatisfy会在遇到第一个不符合条件的子数组时立刻停止遍历,不用浪费多余的计算~
内容的提问来源于stack exchange,提问作者Mohamed Mohsen
相关产品推荐
相关产品推荐

