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í)候再來看牲距。