题目要求:统计一个数字在排序数组中出现的次数。
我想请问为什么当这部分代码 return -1 的时候可以执行,return 0 就不可以执行了呢?以及请问全部代码还有其它问题吗?
if j == len(nums) or nums[j] != target:
return 0
以下是完整代码:
class Solution(object):
def search(self, nums, target):
# 查找右边界
i, j = 0, len(nums) - 1
while i <= j:
m = (i + j) // 2
if nums[m] < target:
i = m + 1
elif nums[m] > target:
j = m - 1
else:
i = m + 1
right = i
if j == len(nums) or nums[j] != target:
return 0
# 查找左边界
i, j = 0, len(nums) - 1
while i <= j:
m = (i + j) // 2
if nums[m] < target:
i = m + 1
elif nums[m] > target:
j = m - 1
else:
j = m - 1
left = j
if i == len(nums) or nums[i] != target:
return 0
return right - left - 1
这哪里是完整代码,光有定义没有调用啊
如何定义是要看你想如何调用,返回0代表什么,返回-1又代表什么,乱返回哪行
正常来说,search返回-1表示没有找到,返回0表示找到的是第0项
明明没找到但是你返回第0项,能不出错吗
可以用这个试试
class Solution(object):
def search(self, nums, target):
# 查找右边界
i, j = 0, len(nums) - 1
while i <= j:
m = (i + j) // 2
if nums[m] <= target:
i = m + 1
else:
j = m - 1
right = i
# 查找左边界
i, j = 0, len(nums) - 1
while i <= j:
m = (i + j) // 2
if nums[m] < target:
i = m + 1
else:
j = m - 1
left = j
return right - left - 1 if right > left else 0
不知道你这个问题是否已经解决, 如果还没有解决的话: