# 搜索二维矩阵II (opens new window)

  • 难度:Medium
  • 标签:

# 刷题思路

  • [x] 双重循环
  • [ ] xx

# 方法 1 双重循环

  • 复杂度:
    • 时间 O(m*n)
    • 空间 O(1)
  • 结果:
    • 执行用时:552 ms, 在所有 JavaScript 提交中击败了19.64%的用户
    • 内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了18.24%的用户
var searchMatrix = function(matrix, target) {
    if (!matrix || !matrix.length || !matrix[0].length) return false
    const [m, n] = [matrix.length, matrix[0].length]
    for (let i=0; i<m; i++) {
        for (let j=0; j<n; j++) {
            if (matrix[i][j] === target) return true
        }
    }
    return false
};

# 方法 2

  • 复杂度:
    • 时间 O()
    • 空间 O()
  • 结果:
    • 执行用时:456 ms, 在所有 JavaScript 提交中击败了25.51%的用户
    • 内存消耗:41.6 MB, 在所有 JavaScript 提交中击败了14.66%的用户
var searchMatrix = function(matrix, target) {
    if (!matrix || !matrix.length || !matrix[0].length) return false
    let [m, n] = [matrix.length, matrix[0].length]
    for (let i=0; i<m; i++) {
        let [left, right] = [0, n-1]
        if (matrix[i][left] > target) break
        if (matrix[i][right] < target) continue
        while (left <= right) {
            if (target===matrix[i][left] || target===matrix[i][right]) return true
            ;[left, right] = [left+1, right-1]
        }
    }
    return false
};

JS刷题记录 Leetcode-js (opens new window) 每周都会更新刷题心得或者题解, 你的点赞或 star 都将助力我产出更好内容~