不积跬步,无以至千里;不积小流,无以成江海

📅:2020-6-26 🔗:https://leetcode.cn/contest/weekly-contest-299/

A: 判断矩阵是否是一个 X 矩阵

思路:二维数组遍历
关键点:

  1. function checkXMatrix(grid: number[][]): boolean {
  2. const m = grid.length, n = grid[0].length;
  3. for (let i = 0; i < m; i++) {
  4. for (let j = 0; j < n; j++) {
  5. if (j == i || j == (n - 1 - i)) {
  6. if (!grid[i][j]) return false;
  7. } else {
  8. if (grid[i][j]) return false;
  9. }
  10. }
  11. }
  12. return true;
  13. };

总结:

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:

思路:
关键点:

总结:

复盘

image.png
A: ✅
B: ❌ 仅找到了count ** 2的规律, count的规律遵循斐波那些数列。 待加强: bigint运算
C: ❌
D: ❌