給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1。
樣例樣例 1:
輸入:[1,4,4,5,7,7,8,9,9,10],1
輸出: 0
樣例解釋:
第一次出現在第0個位置。
樣例 2:
輸入: [1, 2, 3, 3, 4, 5, 10],3
輸出: 2
樣例解釋:
第一次出現在第2個位置
樣例 3:
輸入: [1, 2, 3, 3, 4, 5, 10],6
輸出: -1
樣例解釋:
沒有出現過6, 返回-1
class
solution
:"""
@param nums: the integer array.
@param target: target to find.
@return: the first position of target. position starts from 0.
"""defbinarysearch
(self, nums, target)
:# write your code here
low=
0 high=
len(nums)-1
while low<=high:
mid=
(low+high)//2
if nums[mid]
low=mid+
1else
: high=mid-
1if nums[low]
==target:
return low
if nums[high]
==target:
return high
return
-1
def
binarysearch
(self, nums, target)
:# write your code here
low =
0 high =
len(nums)-1
while low <= high:
mid =
(low + high)//2
if nums[mid]
== target:
return mid
elif target < nums[mid]
: high = mid -
1else
: low = mid +
1return
-1
該問題中要求了如果目標值等於陣列中的重複元素,則返回第乙個元素位置
而原二分查詢問題中並沒有要求返回target第一次出現的下標
二分查詢(Python3)
它接受乙個待查詢的整數值和乙個已經有順序的整數陣列作為引數。如果待查詢的整數值存在於陣列中,則返回它在陣列中的索引,否則提示該數值不在陣列中。print 有序陣列中的二分查詢 key int input 請輸入您要查詢的整數 c 10,11,12,17,19,21,22,24,32,38,49,51...
python3 二分查詢
請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例1 5,4,1,2,4,4,5 3 二分查詢 param n int整型 陣列長度 param v int整型 查詢值 param a int整型一維陣列 有序陣列 ret...
二分查詢Python3 實現
coding utf 8 usr bin env python 3.6.3 author vivian time 2018 9 22 是排序後的序列,且支援下標索引的順序表 二分查詢適用物件 有序順序表 def binary search alist,data if len alist 查詢的終止遞...