首页 > 解决方案 > 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,请您调查一下。

标签: python

解决方案


递归时不会返回,每当您使用递归时,请记住返回值:

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)

推荐阅读