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

相关推荐
坤坤子吖1 小时前
算法学习——高精度加减乘除
c++·笔记·学习·算法
CQU_JIAKE1 小时前
10.1[A]2267,磐久UMX【上下文128K,KVCache部分]
算法
朝朝辞暮i1 小时前
C++ 第 14 课:引用 &
开发语言·c++·算法
Joe_Wang52 小时前
【从0到1学习JVM · 21】既不浪费空间又没有碎片,标记整理算法到底慢在哪
jvm·学习·算法·垃圾回收·标记整理算法
让学习成为一种生活方式2 小时前
PlantCellChat--单细胞与空间转录组数据预测植物细胞间通讯的R包--The Plant Journal
算法
C++ 老炮儿的技术栈2 小时前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
梦帮科技2 小时前
多任务权重流形融合:SLERP 球形线性插值、DARE 稀疏剪枝与多专家模型融合落地
人工智能·深度学习·算法·机器学习·tensorflow·聚类·剪枝
Tisfy2 小时前
LeetCode 0020.有效的括号:栈匹配
算法·leetcode·字符串·题解·括号匹配
测试学习test3 小时前
SPI读取W25Q64硬件驱动(HAL库)
数据库·stm32·嵌入式硬件·算法
迅猛龙办公室3 小时前
Python实现斐波那契数列
算法