LeetCode 378 有序矩阵中的第K小的元素

    技术2022-07-12  67

    在最大值和最小值之间搜索

    class Solution: def check(self,matrix,val): m,n=len(matrix),len(matrix[0]) i,j=m-1,0 cnt=0 while i>=0 and j<n: if matrix[i][j]<=val: cnt+=(i+1) j+=1 else: i-=1 return cnt def kthSmallest(self, matrix: List[List[int]], k: int) -> int: l,r=matrix[0][0],matrix[-1][-1] res=l while l<=r: mid=(l+r)//2 num=self.check(matrix,mid) if num>=k:#找到的为最小的l,最小的l正好在数组中 #大于等于时要向左搜索 r=mid-1 else: l=mid+1 return l

     

    Processed: 0.012, SQL: 10