LeetCode 240 [Search a 2D Matrix II]

原題

寫出一個(gè)高效的算法來搜索m×n矩陣中的值,返回這個(gè)值是否出現(xiàn)。
這個(gè)矩陣具有以下特性:
每行中的整數(shù)從左到右是排序的。
每一列的整數(shù)從上到下是排序的。
在每一行或每一列中沒有重復(fù)的整數(shù)。

考慮下列矩陣:

[
    [1, 3, 5, 7],
    [2, 4, 7, 8],
    [3, 5, 9, 10]
]

給出target = 3,返回 True

解題思路

  • 思考時(shí)間復(fù)雜度時(shí),可以從有多少個(gè)答案的角度考慮,像permutation時(shí)間復(fù)雜度肯定是2n而不會(huì)是n2
  • [Search a 2D Matrix I]是每一行的最后一個(gè)都小于下一行的第一個(gè),所以可以把整個(gè)二維數(shù)組看成遞增的一維數(shù)組,而本題不同。
  • 把起始點(diǎn)設(shè)為左下角,如本題,如果target > 3則第一列跳過,如果target < 3則最后一行跳過

完整代碼

class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        if not matrix:
            return 0
            
        depth = len(matrix)
        width = len(matrix[0])
        row, col = depth - 1, 0
        while row >= 0 and col < width:
            if matrix[row][col] == target:
                return True
            elif matrix[row][col] > target:
                row -= 1
            else:
                col += 1
        return False
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容