给定一个递增排序的数组,查找某个数字是否在数组中,如果在数组中,则返回该数字在数组中第一次出现的位置(从0开始);如果不在数组中,返回-1 。
不需要考虑给定的数组不是递增的情况。
务必使用二分查找的方式。
int binarySearch(int* arr, int arrLen, int a) { // write code here int left = 0; int right = arrLen-1; int mid = 0; while(left<=right) { mid = (left+right)/2; if(arr[mid]==a) { if(arr[mid-1]!=a) return mid; else return mid-1; } else if(arr[mid]>a) right = mid - 1; else left = mid + 1; } return -1; }
import java.util.*; public class Solution { /** * * @param arr int整型一维数组 * @param a int整型 要查找的数字 * @return int整型 */ public int binarySearch (int[] arr, int num) { // write code here if(arr.length<=0){ return -1; } int left =0; // 左脚标 int right =arr.length-1; // 右脚标 // 一直到left== right 时跳出循环 while(left<right){ int mid = (left+right)>>1; if(arr[mid]<num){ left=mid+1; }else{ right=mid; } } return arr[left]==num ? left:-1; } }
import java.util.*; public class Solution { /** * * @param arr int整型一维数组 * @param a int整型 要查找的数字 * @return int整型 */ public int binarySearch (int[] arr, int a) { // write code here int l = 0, r = arr.length - 1; while(l < r){ int mid = (l + r) >> 1; if(arr[mid] >= a) r = mid; else l = mid + 1; } return arr[l] == a ? l : -1; } }