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 };


浙公网安备 33010602011771号