二分_medium_1428_至少有一個 1 的最左端列

文章目錄

題目描述

在這裏插入圖片描述
在這裏插入圖片描述

思路

  • 二分
# """
# This is BinaryMatrix's API interface.
# You should not implement it, or speculate about its implementation
# """
#class BinaryMatrix(object):
#    def get(self, row: int, col: int) -> int:
#    def dimensions(self) -> list[]:

class Solution:
    def leftMostColumnWithOne(self, binaryMatrix: 'BinaryMatrix') -> int:
        m, n = binaryMatrix.dimensions()  # row, column
        left, right = 0, n-1
        while left < right:
            mid = left + (right - left) // 2
            key = False
            for i in range(m):
                if binaryMatrix.get(i, mid):
                    key = True
                    break
            if not key:
                left = mid + 1
            else:
                right = mid
        key = False
        for i in range(m):
            if binaryMatrix.get(i, left):
                key = True
                break
        return left if key else -1
  • Time:O(nlogm)Time: O(nlogm) n 爲列 m爲行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章