zoukankan      html  css  js  c++  java
  • 240. Search a 2D Matrix II

    https://leetcode.com/problems/search-a-2d-matrix-ii/#/description

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

    • Integers in each row are sorted in ascending from left to right.
    • Integers in each column are sorted in ascending from top to bottom.

    For example,

    Consider the following matrix:

    [
      [1,   4,  7, 11, 15],
      [2,   5,  8, 12, 19],
      [3,   6,  9, 16, 22],
      [10, 13, 14, 17, 24],
      [18, 21, 23, 26, 30]
    ]
    

    Given target = 5, return true.

    Given target = 20, return false.

     
     
    Sol :
     
    class Solution(object):
        def searchMatrix(self, matrix, target):
            """
            :type matrix: List[List[int]]
            :type target: int
            :rtype: bool
            """
            
            # exclusive method
            # Time O(M+N) Space O(1)
            
            
            # Compare the target with the top right corner element of the martix. If target < right corner, search target on area with smaller values, i.e. go leftwards; if target > right corner, search target on area with bigger values, i.e. go downwards.
            
            if len(matrix) == 0 or len(matrix[0]) == 0:
                return False
            
            # start from the top right corner, and compare matrix[i][j] with target
            i = 0
            j = len(matrix[0]) - 1
            while i< len(matrix) and j >= 0:
                x = matrix[i][j]
                if target == x:
                    return True
                elif x < target:
                    # search target on the lower side
                    i += 1
                else:
                    # search target on the left side
                    j -= 1
                    
            return False
            
  • 相关阅读:
    js··事件捕捉
    js中的Call()和apply()
    什么是变量提升?
    什么是作用域? 什么是作用域链?
    什么是原型链?
    js中this是什么?
    Js高级 事件冒泡
    Js高级 事件 对象
    Js高级 部分内容 面向对象
    工作期间的策划案总结(1)
  • 原文地址:https://www.cnblogs.com/prmlab/p/7234818.html
Copyright © 2011-2022 走看看