35.Search Insert Position

方法1:平凡思路從前往後比較,小於等於就停止,O(n)。

方法2:在學習二分查找的時候知道二分查找不僅可以查找到元素是否存在,如果查找不到,那麼停止的位置就是插入的位置。所以重新寫一遍二分查找就好了,二分查找也有遞歸和非遞歸的,比較喜歡非遞歸,O(logn)。

遍歷法:

class Solution {

public:

       intsearchInsert(vector<int>& nums, int target) {

              inti = 0;

              for(; i < nums.size(); ++i)

              {

                     if(target < nums[i] || target == nums[i])

                            break;

              }

              returni;

       }

};

 

二分法:

class Solution {

public:

       intsearchInsert(vector<int>& nums, int target) {

              intp = 0, q=nums.size(),mid = nums.size() / 2;

              while(p!=q)

              {

                     if(target == nums[mid])

                            returnmid;

                     elseif (target < nums[mid])

                            q= mid;

                     else

                            p= mid+1;

                     mid= (p + q) / 2;

              }

              returnp;

       }

};

發佈了40 篇原創文章 · 獲贊 19 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章