classSolution:defkthSmallest(self,matrix: List[List[int]],k:int) ->int: n=len(matrix)#判断不大于mid的数是否超过k个defcheck(mid): i=n-1 j=0 num =0while i >=0and j < n:if matrix[i][j] <= mid: j +=1 num += i+1else: i -=1return num >=k l=matrix[0][0] r = matrix[-1][-1]while l < r: mid = l+ (r-l)//2#不大于mid的数不少于k,说明最终答案x不大于midifcheck(mid): r = mid#数量少于k,说明最终答案x大于midelse: l = mid+1print(l,r)return l