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的缘故?

相关推荐
zbh060416 小时前
洛谷P5788 【模板】单调栈——单调栈
数据结构·算法
moonsims16 小时前
Z3 Technology-适用于无人机和机器人的 4K 高清摄像机和视频编码器
算法
摘星编程16 小时前
深入浅出 Tokio 源码:掌握 Rust 异步编程的底层逻辑
网络·算法·rust·系统编程·tokio
Hard_Liquor17 小时前
Datawhale秋训营-“大运河杯”数据开发应用创新大赛
人工智能·深度学习·算法
liu****17 小时前
笔试强训(八)
开发语言·算法·1024程序员节
草莓工作室17 小时前
数据结构14:查找
数据结构·算法
屈冠成18 小时前
C语言数组:编辑世界的坚固桥梁
c语言·开发语言·算法
应用市场18 小时前
STM32卡尔曼滤波算法详解与实战应用
人工智能·stm32·算法
启诚科技18 小时前
树上二分(树的重心)
c++·算法·二分·树的重心
风筝在晴天搁浅19 小时前
代码随想录 617.合并二叉树
数据结构·算法