不积跬步,无以至千里;不积小流,无以成江海
📅:2020-6-26 🔗:https://leetcode.cn/contest/weekly-contest-299/
A: 判断矩阵是否是一个 X 矩阵
思路:二维数组遍历
关键点:
function checkXMatrix(grid: number[][]): boolean {
const m = grid.length, n = grid[0].length;
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (j == i || j == (n - 1 - i)) {
if (!grid[i][j]) return false;
} else {
if (grid[i][j]) return false;
}
}
}
return true;
};
总结:
B: 统计放置房子的方式数
思路:
关键点:
/**
* @param {number} n
* @return {number}
*/
var countHousePlacements = function(n) {
// count ** 2, 仅统计单侧情况
// n = 1, 0, 1
// n = 2, 00, 01, 10
// n = 3, 000, 001, 010, 100, 101
const mod = BigInt(10 ** 9 + 7);
let pre = 1n, count = 2n;
for (let i = 2; i <= n; i++) {
[count, pre] = [(count + pre) % mod, count];
}
return Number(count ** 2n % mod);
};
总结:
C:
思路:
关键点:
总结:
D:
思路:
关键点:
总结:
复盘
A: ✅
B: ❌ 仅找到了count ** 2的规律, count的规律遵循斐波那些数列。 待加强: bigint运算
C: ❌
D: ❌