1. 程式人生 > >LeetCode - 35. Search Insert Position【二分查詢】

LeetCode - 35. Search Insert Position【二分查詢】

題目

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.

Example 1:

Input: [1,3,5,6], 5
Output: 2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 4:

Input: [1,3,5,6], 0
Output: 0

題意

輸入有序陣列和一個數,要求輸出該數有序插入到該陣列中的位置;如果陣列中存在該數,直接輸出該數在陣列中的位置。

分析

最基本的二分查詢。

程式碼

class Solution{
public:
	int searchInsert(vet<int> & str, target) {
		int l = -1, r = str.size();
		while(r - l > 0) {
			int mid = (r - l) / 2;
			if(str[mid] >= target)	r = mid; 
			else	l = mid;
		}
		return r;
	}
};