Leetcode Link: 剑指 Offer 53 - I. 在排序数组中查找数字 I - 力扣(LeetCode)
题目

解法一
思路: 红蓝二分,两次二分,每次的 isBlue 不同。
题解:
class Solution:
def search(self, nums: List[int], target: int) -> int:
l = -1
r = len(nums)
while(l+1 != r):
mid = (l+r) >> 1
if nums[mid] < target:
l = mid
else:
r = mid
if r >= len(nums) or nums[r] != target: return 0
left_bound = r
l = -1
r = len(nums)
while(l+1 != r):
mid = (l+r) >> 1
if nums[mid] <= target:
l = mid
else:
r = mid
right_bound = l
return right_bound - left_bound + 1解法二
思路: 暴力,一个一个看就行
题解:
class Solution:
def search(self, nums: List[int], target: int) -> int:
cnt = 0
for i in range(len(nums)):
if nums[i] == target:
cnt += 1
return cnt解法三
思路: 哈希表,利用Counter找一下就行,然后利用好dict.get()的默认返回值
题解:
class Solution:
def search(self, nums: List[int], target: int) -> int:
d = Counter(nums)
return d.get(target, 0)