python每日一题

给你一个满足下述两条属性的 m x n 整数矩阵:

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false

最简单的方法就是一个个找 我先写个最简单的这个

复制代码
class Solution(object):
    def searchMatrix(self, matrix, target):#matrix是一个矩阵 target是要寻找的那个值
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j]==target:
                    return True
        return False
solution=Solution()
result=solution.searchMatrix([[1,3,5,7],[10,11,16,20],[23,30,34,60]],13)
print(result)

就这就已经通过了 运行速度还打败百分之百 我觉得可能是因为python的缘故?这种for循环其实不好 试试其他方法 我觉得是需要利用这个每行递增 而且下一行相对于上一行的最末尾递增的

那么我是不是如果这个数字比这一行的最后一个大 那么就会在下一行

复制代码
class Solution(object):
    def searchMatrix(self, matrix, target):#matrix是一个矩阵 target是要寻找的那个值
        for i in range(len(matrix)):
            if matrix[i][len(matrix[0])-1]==target:
                return True
            if matrix[i][len(matrix[0])-1]>target:
                if matrix[i][0]>target:
                    return False
                for j  in range(len(matrix[0])):
                    if matrix[i][j]==target:
                        return True
                return False
        return False

solution=Solution()
result=solution.searchMatrix([[1,3,5,7],[13,11,16,20],[23,30,34,60]],13)
print(result)

思路就是这样的 找一行的末尾是比这个数大的 如果达到这个要求 那么找这一行最开始的 要么就在这一行 要么就没有

然后其实还是有优化思路的 就比如在确定了是这一行之后 这一行是有序的 所以使用二分查找会更快 我就不继续写了 感觉这个题目蛮简单的 真的好简单啊 也可能是因为Python的缘故?

相关推荐
会员源码网3 小时前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing4 小时前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
HelloReader4 小时前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱7 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
qianpeng8978 小时前
水声匹配场定位原理及实验
算法
董董灿是个攻城狮20 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员1 天前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish1 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱1 天前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者2 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶