python - leetcode 问题 搜索 2d 矩阵 问题 74
问题描述
class Solution(object):
def out(self,matrix,target):
m1=len(matrix)
m=m1//2
print('m value is'+str(m))
n=len(matrix[m])
print('n value is'+str(n))
if matrix[m][0]>target:
print('it came to 1st clause')
self.out(matrix[0:m],target)
elif matrix[m][0]<target and matrix[m][n-1]<target:
print('it came to 2nd clause')
self.out(matrix[m+1:m1],target)
elif matrix[m][0]<target and matrix[m][n-1]>target:
print('it came to final clause')
for c in matrix[m]:
print(c)
if c==target:
print('true')
return True
return False
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
if(len(matrix)==0):
return False
return self.out(matrix,target)
我不知道为什么我得到的答案是 False,因为Input([[1,3,5,7],[10,11,16,20],[23,30,34,60]],3)
当我运行解决方案时,它会进入 elif 循环并打印 True 但返回 False,请您调查一下。
解决方案
递归时不会返回,每当您使用递归时,请记住返回值:
class Solution(object):
def out(self,matrix,target):
m1=len(matrix)
m=m1//2
print('m value is'+str(m))
n=len(matrix[m])
print('n value is'+str(n))
if matrix[m][0]>target:
print('it came to 1st clause')
return self.out(matrix[0:m],target) ### <- return recursion
elif matrix[m][0]<target and matrix[m][n-1]<target:
print('it came to 2nd clause')
return self.out(matrix[m+1:m1],target) ### <- return recursion
elif matrix[m][0]<target and matrix[m][n-1]>target:
print('it came to final clause')
for c in matrix[m]:
print(c)
if c==target:
print('true')
return True
return False
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
if(len(matrix)==0):
return False
return self.out(matrix,target)
推荐阅读
- gradle - 使用 gradlew 打包的 fat jar 中缺少依赖项 FreeTypeFontGenerator
- javascript - 将 js 变量传递给外部 php 页面
- apache-zookeeper - 无法在 Windows 中安装 Zookeeper
- installation - 如何使用 OCS-Install 从 pling.com 更改 Debian 9 XFCE 中的主题
- react-native - 卸载所有先前安装的屏幕以在后按时退出应用程序
- python - 当语句返回布尔值时,如何在 if 语句中使用该值
- node.js - Parse-Server 电子邮件验证过程
- c# - “游戏对象”无法识别
- loops - 为什么切片可以通过分配在函数中更改,而不是在 for 循环中?
- mysql - Axios 帖子给我一个错误:内部服务器错误