代碼隨想錄算法訓(xùn)練營第一天| 704. 二分查找、27. 移除元素

704、二分查找

題目鏈接:https://leetcode.cn/problems/binary-search/

文章講解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html

視頻講解:https://www.bilibili.com/video/BV1fA4y1o715

想法:

之前有學(xué)過二分查找,但是寫不出來,看了題解之后思路清晰了,兩個(gè)解法都實(shí)現(xiàn)了。

問題:

1、vector的使用,https://blog.csdn.net/weixin_45935610/article/details/123121742;

2、自動(dòng)類型轉(zhuǎn)換丟失精度https://en.cppreference.com/w/cpp/language/implicit_conversion;

3、算術(shù)左移運(yùn)算符,https://blog.csdn.net/weixin_45935610/article/details/123121742;

4、no matching function for call error,https://mrcodehunter.com/no-matching-function-for-call-to-cpp/

今日收獲:

1、當(dāng)查找的數(shù)組中的元素有序且無重復(fù)元素的時(shí)候,可以考慮二分查找‘

2、每次循環(huán)處理邊界條件的時(shí)候。注意循環(huán)不變量原則,區(qū)間的定義就是不變量。

27、移除元素

題目鏈接:https://leetcode.cn/problems/remove-element/

文章講解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html

視頻講解:https://www.bilibili.com/video/BV12A4y1Z7LP

想法:

一開始想到的就是暴力解法,遍歷數(shù)組,然后移動(dòng)元素,時(shí)間復(fù)雜度確實(shí)高,后面實(shí)現(xiàn)了雙指針法,這種方法不改變?cè)瓉碓氐南鄬?duì)順序。

問題:

手動(dòng)模擬了,當(dāng)刪除的元素在第一個(gè)位置,或者刪除的元素連續(xù)出現(xiàn)的情況,更加深入理解了雙指針法。

收獲:

快慢指針就是快指針走的快,用來查找新數(shù)組中的元素,慢指針更新新數(shù)組的位置,如果當(dāng)前位置不是要?jiǎng)h除的元素,慢指針向后移一位,表明一個(gè)新元素被添加到數(shù)組中,而每循環(huán)一次,快指針都會(huì)向前走一位,直到循環(huán)結(jié)束,慢指針在每一次循環(huán)體內(nèi)不一定前進(jìn),這就是雙指針法又叫快慢指針的原因吧。改變順序的想向雙指針法二刷的時(shí)候再來看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容