题目
对一个大小为 n x n 的矩阵而言,如果其每一行和每一列都包含从 1 到 n 的 全部 整数(含 1 和 n),则认为该矩阵是一个 有效 矩阵。
给你一个大小为 n x n 的整数矩阵 matrix ,请你判断矩阵是否为一个有效矩阵:如果是,返回 true ;否则,返回 false 。
示例1
输入:matrix = [[1,2,3],[3,1,2],[2,3,1]]
输出:true
解释:在此例中,n = 3 ,每一行和每一列都包含数字 1、2、3 。
因此,返回 true 。
题解
暴力
- 枚举二维数据
- 对二维数组每行数组排序,得到的必然是[1,n]组成的整数,如果不是,返回false
- 如何快速判断数组是否是[1,n]组成的?
- 将数组转成字符串,先生成[1,n]的数组,将排序后的数组转成字符串与[1,n]组成的数组转为字符串比较,不同返回false
- 最后返回true
代码
var checkValid = function (matrix) {
const m = matrix.length
const n = matrix[0].length
const list = Array(n)
.fill(0)
.map((v, i) => i + 1)
const s = list.join(',')
if (m !== n) return false
for (let i = 0; i < m; i++) {
let temp = []
for (let j = 0; j < n; j++) {
temp.push(matrix[i][j])
}
temp.sort((a, b) => a - b)
if (temp.join(',') !== s) return false
}
for (let i = 0; i < n; i++) {
let temp = []
for (let j = 0; j < m; j++) {
temp.push(matrix[j][i])
}
temp.sort((a, b) => a - b)
if (temp.join(',') !== s) return false
}
return true
}