二分查找
给定一个排序的整数数组(升序)和一个要查找的整数target
,用O(logn)
的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1
。
1 class Solution { 2 public: 3 /** 4 * @param nums: The integer array. 5 * @param target: Target to find. 6 * @return: The first position of target. Position starts from 0. 7 */ 8 int binarySearch(vector<int> &nums, int target) { 9 // write your code here 10 int low=0; 11 int high=nums.size(); 12 int mid=(low+high)/2; 13 int returnData = -1; 14 while(low<=high) 15 { 16 if(nums[mid]<target) 17 { 18 low=mid+1; 19 mid=(low+high)/2; 20 } 21 22 else if(nums[mid]>target) 23 { 24 high=mid-1; 25 mid=(low+high)/2; 26 } 27 else 28 { 29 returnData = mid; 30 high=mid-1; 31 mid=(low+high)/2; 32 } 33 } 34 if(low>high) 35 return returnData; 36 } 37 };
渣渣代码,随缘优化。