python 递归二分搜索问题中的类型错误
Type Error in python recursive binary search problem
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
curr_ind = (right+left)//2
print(nums[curr_ind + 1:len(nums)])
if nums[curr_ind] == target:
return curr_ind
elif nums[curr_ind] > target:
return search(nums[left:curr_ind], target)
elif nums[curr_ind] < target:
return search(nums[curr_ind + 1:len(nums)], target)
return -1
我在倒数第二行收到无法散列类型 'list' 错误。
我不认为我在这个问题上使用字典,但我不确定为什么会给我这个错误。
我认为你错误地使用了递归,试试这个:
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
curr_ind = (right+left)//2
print(nums[curr_ind + 1:len(nums)])
if nums[curr_ind] == target:
return curr_ind
elif nums[curr_ind] > target:
right = curr_ind - 1
elif nums[curr_ind] < target:
left = curr_ind + 1
return -1
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
curr_ind = (right+left)//2
print(nums[curr_ind + 1:len(nums)])
if nums[curr_ind] == target:
return curr_ind
elif nums[curr_ind] > target:
return search(nums[left:curr_ind], target)
elif nums[curr_ind] < target:
return search(nums[curr_ind + 1:len(nums)], target)
return -1
我在倒数第二行收到无法散列类型 'list' 错误。 我不认为我在这个问题上使用字典,但我不确定为什么会给我这个错误。
我认为你错误地使用了递归,试试这个:
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
curr_ind = (right+left)//2
print(nums[curr_ind + 1:len(nums)])
if nums[curr_ind] == target:
return curr_ind
elif nums[curr_ind] > target:
right = curr_ind - 1
elif nums[curr_ind] < target:
left = curr_ind + 1
return -1