35.Search Insert Position

方法1:平凡思路从前往后比较,小于等于就停止,O(n)。

方法2:在学习二分查找的时候知道二分查找不仅可以查找到元素是否存在,如果查找不到,那么停止的位置就是插入的位置。所以重新写一遍二分查找就好了,二分查找也有递归和非递归的,比较喜欢非递归,O(logn)。

遍历法:

 1 class Solution {
 2 
 3 public:
 4 
 5        intsearchInsert(vector<int>& nums, int target) {
 6 
 7               int i = 0;
 8 
 9               for(; i < nums.size(); ++i)
10 
11               {
12 
13                      if(target < nums[i] || target == nums[i])
14 
15                             break;
16 
17               }
18 
19               return i;
20 
21        }
22 
23 };

 

 

二分法:

 1 class Solution {
 2 
 3 public:
 4 
 5        intsearchInsert(vector<int>& nums, int target) {
 6 
 7               int p = 0, q=nums.size(),mid = nums.size() / 2;
 8 
 9               while(p!=q)
10 
11               {
12 
13                      if(target == nums[mid])
14 
15                             return mid;
16 
17                      elseif (target < nums[mid])
18 
19                             q= mid;
20 
21                      else
22 
23                             p= mid+1;
24 
25                      mid= (p + q) / 2;
26 
27               }
28 
29               return p;
30 
31        }
32 
33 };

 

posted @ 2016-11-21 17:14  Initial_Dream  阅读(114)  评论(0)    收藏  举报