统计一个数字在排序数组中出现的次数 - 查找算法(简单)

题目要求:统计一个数字在排序数组中出现的次数。
我想请问为什么当这部分代码 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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^