题目来源:http://www.lintcode.com/zh-cn/problem/search-insert-position/
C++版 VS2012测试通过
1 //#include <iostream>
2 //#include <vector>
3 //using namespace std;
4
5 class Solution {
6 /**
7 * param A : an integer sorted array
8 * param target : an integer to be inserted
9 * return : an integer
10 */
11 public:
12 int searchInsert(vector<int> &A, int target) {
13 // write your code here
14 // find first position >= target
15 if (A.size() == 0) {
16 return 0;
17 }
18 int start = 0, end = A.size() - 1;
19 while (start + 1 < end) {
20 int mid = (end - start) / 2 + start;
21 if (A[mid] >= target) {
22 end = mid;
23 } else {
24 start = mid;
25 }
26 }
27 if (A[start] >= target) {
28 return start;
29 }
30 if (A[end] >= target) {
31 return end;
32 }
33 return A.size();
34 }
35 };
36
37 //测试
38 //int main()
39 //{
40 // Solution s;
41 //
42 // int a[]={0,3,5,6};
43 // vector<int> v(a,a+4);
44 //
45 // int result=s.searchInsert(v,7);
46 // cout<<result;
47 //}
Python2.7版 spider测试通过
1 class Solution: 2 """ 3 @param A : a list of integers 4 @param target : an integer to be inserted 5 @return : an integer 6 """ 7 def searchInsert(self, A, target): 8 if len(A) == 0: 9 return 0 10 start, end = 0, len(A) - 1 11 # first position >= target 12 while start + 1 < end: 13 mid = (start + end) / 2 14 if A[mid] >= target: 15 end = mid 16 else: 17 start = mid 18 19 if A[start] >= target: 20 return start 21 if A[end] >= target: 22 return end 23 return len(A) 24 25 #测试 26 #if __name__=="__main__": 27 # s=Solution() 28 # L=[1,3,5,6] 29 # print s.searchInsert(L, 2)