기술나눔

LeetCode 문제풀이 : 2319. 행렬이 X행렬인지 판단, JavaScript, 상세설명

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

원제목 링크:
https://leetcode.cn/problems/check-if-matrix-is-x-matrix/

질문의 의미를 이해하십시오.

  1. 다음과 같이 예제 1의 인덱스를 나열합니다.
00 01 02 03
10 11 12 13
20 21 22 23
30 31 32 33
  • 1
  • 2
  • 3
  • 4
  1. 다음과 같이 예제 2의 인덱스를 나열합니다.
00 01 02
10 11 12
20 21 22
  • 1
  • 2
  • 3
  1. 알 수있는 바와 같이X내의 지수는 다음을 만족합니다.i === j또는i + j === n - 1, 이를 사용하여 현재 좌표가 다음 위치에 있는지 확인할 수 있습니다.X내부에

문제 해결 아이디어:

  1. 횡단grid모든 요소
  2. 현재 요소의 인덱스 결정i그리고j거기에 있습니까?X내부에
  3. 그런 다음 현재 요소의 값이 질문 요구 사항을 충족하는지 확인합니다.
/**
 * @param {number[][]} grid
 * @return {boolean}
 */
var checkXMatrix = function(grid) {
  // 矩阵长度n
  const n = grid.length
  // 矩阵最后一位索引last
  const last = n - 1

  // 遍历每个位置
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      // 如果当前位置为X中的元素
      if (i === j || (i + j === last)) {
        // 如果X中的元素值为0,不符合要求
        if (grid[i][j] === 0) {
          return false
        }
      } else {
        // 如果X以外的元素值不为0,不符合要求
        if (grid[i][j] !== 0) {
          return false
        }
      }
    }
  }

  // 正常退出循环,表示符合条件
  return true
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31