給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。
class solution:
def search(self, nums: list[int], target: int) -> int:
l = 0 #定義l從頭開始r從尾部開始
r = len(nums) - 1
while l <= r:
if target not in nums:
return -1 #如果給定值不在列表中返回-1
if nums[l] == target:
return l
elif nums[r] == target:
return r
else :
mid = (l+r) // 2 #如果給定值不在頭部或者尾部 則取中間索引的值
if nums[mid] > target: #中間的值大於給定的值(target ),則把中間的值賦值給r(尾部),給定值在頭部和mid之間
r = mid
elif nums[mid] < target: #同上理論
l = mid
else:
return mid # 返回給定值在列表中的索引
def val_(val , nums , left ,right):#定義乙個函式
if right > 0 : #如果右面的指標大於0則繼續執行
mid = left + (right - left) // 2 #為了防止資料超出記憶體,定義乙個中間值
if val == nums[mid]: #如果給定的值在index為mid上,則返回這個索引index
return mid
elif val > nums[mid]: #如果給定的值大於這個索引下的值
return val_(val , nums , mid+1 , right) #給定義的未知量重新定義(x相當於賦值給第一行),
else:
return val_(val , nums , left , mid - 1 ) #同上
else :
return -1 #值不在表內的時候 返回-1
#下面是輸出
val = 55
nums=[1,2,5,9,11,55,88]
left = 0
right = len(nums)
輸出print(val_(val , nums , left , right))
704 二分查詢
給定乙個 n 個元素有序的 公升序 整型陣列 nums 和乙個目標值 target 寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 1。示例 1 輸入 nums 1,0,3,5,9,12 target 9 輸出 4 解釋 9 出現在 nums 中並且下標為 4 示例 ...
二分查詢704
給定乙個 n 個元素有序的 公升序 整型陣列 nums 和乙個目標值 target 寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 1。示例 1 輸入 nums 1,0,3,5,9,12 target 9 輸出 4 解釋 9 出現在 nums 中並且下標為 4 示例 ...
704 二分查詢
簡單 704.二分查詢 給定乙個 n 個元素有序的 公升序 整型陣列 nums 和乙個目標值 target 寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 1。示例 1 輸入 nums 1,0,3,5,9,12 target 9 輸出 4 解釋 9 出現在 nums ...