解題思路:對於該題要求,顯然可以利用暴力法即順序查詢的方法查詢元素插入位置,但這顯然不是最優解法。此時很容易想到利用二分查詢法,由於該題陣列內可能不存在插入的元素,所以需要略微修改下二分查詢的演算法,搜尋到最後乙個小於目標的元素,插入到它的後面,或搜尋到第乙個大於等於目標的元素,插入到它的當前位置。此處使用第一種方法,即nums[mid] < target。
注意點:
對於nums[mid] < target的方法,即搜尋最後乙個小於目標的元素時,可能整個陣列都大於target,所以ans初始值設定為0。
對於nums[mid] >= target的方法,即搜尋第乙個大於等於目標的元素,可能整個陣列都小於target,所以ans初始值設定為length。
時間複雜度:o(logn)
空間複雜度:o(1)
題後總結:
優:熟練的使用二分查詢解決題目
差:無
2020 8 4 力扣每日
儲存0入度元素 14for int i 0 i numcourses i 18while queue.isempty 26 27return count numcourses 判斷拓撲排序元素個數是否與課程數一致28 29 解題思路 根據題目中先修課程的描述,其與有向圖的構造類似,而判斷最終是否可以...
2020 7 23 力扣每日
解題思路 這是一道經典的動態規劃題目,由於移動方向為向右與向下,說明除了第一行第一列以外,其餘點的對應最小路徑和,只可能是從左移動至當前位置的路徑和,或是從上方移動至當前位置的路徑和。我們使用二維陣列dp row col 儲存所有點的對應路徑和情況。用up,left分別儲存從上,與從左的兩種情況,顯...
2020 7 21 力扣每日
解題思路 該題與先前的7.15日的每日一題相似,兩者都是不同的二叉搜尋樹,不同的是,先前只需返回總數,而該題需要返回所有的樹,但解題思路是相似的,要解決根節點的情況就要解決左右子樹的情況,這裡同樣可以使用動態規劃來實現,但此處先用遞迴來實現,便於理解。根據二叉搜尋樹的性質,顯然,i作為根節點時的左子...