我正在编写一个Python程序,递归地在2D数组中查找目标,以解决this问题。我使用一个二进制搜索方法递归地查找目标是否存在,但它给了我这个最大递归深度超出错误。有什么建议吗
我的代码:
def searchMatrix(self, matrix, target):
small = [0,0]
big = [len(matrix)-1,len(matrix[0])-1]
return self.searchUtil(matrix,target,small,big)
def searchUtil(self,matrix,target,small,big):
if big >= small:
#find the mid target
midx,midy = (small[0]+big[0])/2,(small[1]+big[1])/2
if matrix[midx][midy] == target:
return True
#if mid is >= target, it will exclude all the element smaller than it
if matrix[midx][midy] >= target:
return self.searchUtil(matrix,target,[midx,0],[midx,midy-1]) or self.searchUtil(matrix,target,[0,midy],[midx-1,midy]) or self.searchUtil(matrix,target,[0,0],[midx-1,midy-1])
else:
#if mid is < target, it will exclude all the element bigger than it
return self.searchUtil(matrix,target,[midx+1,0],[len(matrix)-1,midy]) or self.searchUtil(matrix,target,[0,midy+1],[midx,len(matrix[0])-1]) or self.searchUtil(matrix,target,[midx+1,midy+1],[len(matrix)-1,len(matrix[0])-1])
else:
return False
如@DarrylG所示,在这种情况下,二进制搜索不适用。
这就是我解决这个问题的方法:
相关问题 更多 >
编程相关推荐