704. Binary Search(python+cpp)
阿新 • • 發佈:2018-11-03
題目:
Given a sorted (in ascending order) integer array
nums
of n elements and a target value, write a function to search target innums
. If target exists, then return its index, otherwise return-1
.
Example 1:Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4
Example 2:
Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1
Note:
You may assume that all elements innums
are unique.
n
will be in the range[1, 10000]
.
The value of each element in nums will be in the range[-9999, 9999]
.
解釋:
二分查詢經典問題。
python程式碼:
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left=0
right=len(nums)-1
while left<=right:
mid=left+(right-left)/2
if nums[mid]==target:
return mid
else:
if nums[mid]<target:
left=mid+1
else:
right=mid-1
return -1
c++程式碼:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0;
int right=nums.size()-1;
while (left<=right)
{
int mid=left+(right-left)/2;
int num=nums[mid];
if (num==target)
return mid;
else if(num>target)
right=mid-1;
else
left=mid+1;
}
return -1;;
}
};
總結:
注意是用<=
哦。