好久沒有更新算法題,今天來寫一道二分查找的題目。題目要求如下,
那么這道題的解題思路如下,我們尋找的過程是首先去訪問數組的中間位置mid,如果nums[mid]大于了targe
那么說明,我們要找的數在mid的左半邊,此時我們讓right-1。
如果nums[mid]小于了targe
那么說明我們要找的數在mid的右,因此此時我們應該讓下標left+1。
那么如果nums[mid]等于了targe
那么說明找到了將mid進行返回即可。大致的思路就是這樣,詳細的代碼如下:
class Solution {public int search(int[] nums, int target) {int left=0;int right=nums.length-1;while(left<=right){int mid= (left+right)/2;if(nums[mid]<target){left=mid+1;}else if(nums[mid]>target){right=mid-=1;}else{return mid;}}return -1;}
}
其實呢二分查找的思想不難,就是有時候實現的時候會出現各種錯誤,那么如果有任何問題,可以在文章下方留言,博主看到了會進行答疑解釋。如果覺得博主寫的可以麻煩給個3連謝謝(●ˇ?ˇ●)!