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

相关推荐
指掀涛澜天下惊2 分钟前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++7 分钟前
【洛谷】kmp算法
开发语言·算法
禹凕15 分钟前
Dijkstra算法详解与应用
python·算法
YaraMemo1 小时前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
weixin_307779131 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN2 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
枫叶林FYL3 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
禹凕3 小时前
滑动窗口算法实战指南
python·算法
DisonTangor3 小时前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手
明月_清风4 小时前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go