LintCode 搜尋插入位置

chi633發表於2017-12-21

題目

給定一個排序陣列和一個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。 你可以假設在陣列中無重複元素。

樣例 [1,3,5,6],5 → 2 [1,3,5,6],2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6],0 → 0

分析

顯然這道題就是一道簡單的查詢題,採用二分查詢的演算法,最後在嘗試給出返回值就可以了,這題較為簡單

程式碼

public class Solution {
    /** 
     * param A : an integer sorted array
     * param target :  an integer to be inserted
     * return : an integer
     */
    public int searchInsert(int[] A, int target) {
        // write your code here
        if(A.length == 0)
    		return 0;
    	if(A == null)
    		return -1;
        int lo = 0;
        int hi = A.length - 1;
        int mid;
        while(lo <= hi)
        {
        	mid = (hi-lo)/2 + lo;
        	if(target < A[mid])
        		hi = mid-1;
        	else if(target > A[mid])
        		lo = mid+1;
        	else
        	    return mid;
        }
        return lo;
    }
}
複製程式碼

相關文章