Lettcode_35_Search Insert Position

본 고 는 학습 중의 총 결 입 니 다.전재 하 는 것 을 환영 하지만 출처 를 밝 혀 주 십시오.http://blog.csdn.net/pistolove/article/details/43739647
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples. [1,3,5,6] , 5 → 2 [1,3,5,6] , 2 → 1 [1,3,5,6] , 7 → 4 [1,3,5,6] , 0 → 0
생각:
(1)정렬 된 배열 과 정 수 를 정 하고 이 정수 가 배열 에 있 는 위 치 를 구 하 는 것 을 의미 합 니 다.
(2)배열 이 정렬 되 어 있 기 때문에 본 문 제 는'이분 찾기'알고리즘 을 통 해 목표 정수 의 위 치 를 찾 을 수 있다.그러나 경계 값 에 대한 판단 에 주의해 야 한다.목표 의 정수 가 배열 의 첫 번 째 요소 보다 적 을 때 0 으로 돌아 가 야 한다.대상 의 정수 가 배열 의 마지막 요소 보다 클 때 배열 의 길 이 를 1 로 되 돌려 줍 니 다.이 문 제 는 비교적 간단 하 니 상세 한 내용 은 아래 코드 를 보십시오.
(3)본문 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.
알고리즘 코드 는 다음 과 같 습 니 다.
/**
 * @author liqq
 */
public class SearchInsert {
	public int searchInsert(int[] A, int target) {
		int high = A.length - 1;
		int low = 0;
		int mid = (high + low) / 2;

		if (A[low] > target)
			return 0;
		if (A[high] < target)
			return high + 1;

		while (mid >= 0 || mid <= high) {
			if (A[mid] > target) {
				if (A[mid] > target && A[mid - 1] < target) {
					return mid;
				} else {
					mid--;
				}
			} else if (A[mid] < target) {
				if (A[mid] < target && A[mid + 1] > target) {
					return mid + 1;
				} else {
					mid++;
				}
			} else {
				return mid;
			}

		}
		return -1;
	}
}

좋은 웹페이지 즐겨찾기