找出有序數組中缺失的數字


思路描述:假設 0~n-1 中沒有數字 i ,那么這 n - 1 個數字的和為 sum = n*(n-1)/2 - i,那么 i = n*(n-1)/2 - sum。


 

 


其實我們可以注意到,從缺失的數字 i 開始下標和數值不相等


 

 


前兩種做法時間復雜度均為 O(n),有沒有更優的做法?由第二種做法我們知道,如果 k == nums[k],那么缺失的數字一定在 k 右邊,如果 k != nums[k],那么缺失的數字要么為 k 要么在 k 左邊;這個很類似於二分查找,我們也可以使用二分的思想去優化時間復雜度。


 

 

作者:yizhe-shi
鏈接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/solution/c-onolgnfang-fa-jie-da-by-yizhe-shi/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM