이 문제에 대한 두 개의 얼굴을하는 알고리즘을 요약하면, 코드가 자신의 논리가 문제가있는 것 같습니다 발견, 절반을 작성 한 후 궁극적으로 느끼는 즉시 면접 바이두의 순간 그것을 수행하지 않고 선도, 아래로 쓸 수있는 방법이 없습니다 .. .......
아도 봐, 직접 제목
요구 사항 : 달성하기 위해 반복적 인 방법을 사용하여, 이진 검색을 쓰고, 알고리즘 설계 테스트 케이스
인터뷰 후이 주제에 정말 간단하고에서 코드를 작성하는 간단 참조
public class Algorithm{
public int binarySearch(int[] nums,int target){
int left = 0;
int right = nums.length-1;
while(left<=right){
int mid =(left+right)/2;
if(nums[mid]==target){
return mid;
}
else if(nums[mid]<target){
left = mid +1;
}
else if(nums[mid]>target){
right = mid-1;
}
}
return -1;
}
}
테스트 케이스 :
public class AlgorithmTestcase{
public static void main(String[] args){
Algorithm algorithm = new Algorithm();
int [] nums = {1,3,5,7,8,9};
int target = 7;
System.out.println(algorithm.binarySearch(nums,target))
}
}
물론, 나는 그들이 찾을 수있는 경우 이분법이 목표 값보다 쓰기 때문에 컬렉션이 반환되는 경우 대상이 nums에서 발견되지 않는 경우는, 인덱스 지수의 목표를 반환 긍정적 인 테스트 케이스를 작성하는 그냥 여기있어 -1이 경우 독자는 자신을 작성합니다.