跟著公眾號刷leetcode算法

https://github.com/youngyangyang04/leetcode-master

數(shù)組部分

2020.9.8

  • 搜索插入位置
    一道簡單的二分題目亲铡,提到有序數(shù)組,就可以用二分試一試蜘拉。我目前用的是C++统台,在評論區(qū)看到一個代碼臭觉,
    return lower_bound(nums.begin(),nums.end(),target) - nums.begin();
    
    lower_bound適用于排過序的數(shù)組卤橄,且底層算法的時間復雜度為O(n)
    ??與二分查找相關的三個函數(shù)警医,函數(shù)內(nèi)部使用二分查找實現(xiàn)
    #include<algorithm> 前提:有序數(shù)組
    1??lower_bound(起始地址乌妒,結束地址,查找元素) 左閉右開的區(qū)間猴仑,查找第一個大于等于指定元素的位置(第一個可插入的位置)审轮,若無,則返回end(超界)
    2??upper_bound(起始地址辽俗,結束地址疾渣,查找元素)左閉右開,查找第一個大于指定元素的位置(最后一個可插入的位置)崖飘,若無榴捡,則返回end(超界)
    3??binary_search(起始地址,結束地址朱浴,查找元素)左閉右開區(qū)間吊圾,返回bool值
  • 移除元素
    雙指針方法,沒什么特別的
  • 刪除排序數(shù)組中的重復項
    同上題翰蠢,雙指針法
  • 長度最小的子數(shù)組
    雙指針或者滑動窗口法项乒,兩個指針start、end梁沧,end遍歷整個數(shù)組檀何,求以end為最后一個元素的滿足子數(shù)組元素之和大于s的數(shù)組最小長度,start隨著滑動窗口內(nèi)元素之和進行調整廷支,時間復雜度為O(n)
    還有一個O(nlogn)的算法频鉴,待補(?)可能有什么特殊的方法需要學習吧

2020.9.10

  • 螺旋矩陣 2
    明明是一道很簡單的模擬題,被我做出了高考數(shù)學最后一個大題的感覺恋拍,說到底還是細節(jié)把握的不好垛孔,編程習慣可能也不好,總之就是都不好施敢,要多練練啊周荐,腦子想的和動手編程的結果真的不一樣。
    我犯的幾個錯誤:
  1. 題目輸出要求的是vector僵娃,我在定義vector的時候沒有初始化羡藐,后面直接采用數(shù)組的形式進行賦值,oh~
  2. for循環(huán)中用于控制循環(huán)次數(shù)的變量i悯许,我保留了它仆嗦,用到下一個for循環(huán)中,卻忘記了上一個循環(huán)是因為i不滿足循環(huán)條件了才退出的先壕,把i當成是符合條件的最后一個數(shù)值進行運算瘩扼,導致數(shù)據(jù)越界,shift垃僚!
    基本的思路就是一圈一圈填充集绰,我是用每一圈的寬度來控制計算坐標值,在題解區(qū)看到有人定義四個變量來控制邊界谆棺,真的很簡潔栽燕,代碼也很簡潔罕袋,需要學習~

class Solution {
    public int[][] generateMatrix(int n) {
        int l = 0, r = n - 1, t = 0, b = n - 1;
        int[][] mat = new int[n][n];
        int num = 1, tar = n * n;
        while(num <= tar){
            for(int i = l; i <= r; i++) mat[t][i] = num++; // left to right.
            t++;
            for(int i = t; i <= b; i++) mat[i][r] = num++; // top to bottom.
            r--;
            for(int i = r; i >= l; i--) mat[b][i] = num++; // right to left.
            b--;
            for(int i = b; i >= t; i--) mat[i][l] = num++; // bottom to top.
            l++;
        }
        return mat;
    }
}

2020.9.11

大清早來,我決定先把“螺旋矩陣2”再寫一遍碍岔,是煩躁的一天還是開心的一天就看它的了——早上比較清醒浴讯,一遍過,開心~開始科研

  • 二維數(shù)組并不是n*m的連續(xù)地址空間組成的


    二維數(shù)組
  • 忽然看到了一個熟悉的題目就做了一下 編輯距離
    一發(fā)A蔼啦,感覺自己dp基礎知識掌握的還不錯榆纽,這題有點像最長公共子串的長度
  • 必須掌握的數(shù)組理論知識

2020.9.12

今日份睡覺和科研任務比較重

  • 四數(shù)之和 和之前做過的三數(shù)之和幾乎完全一樣
  • 環(huán)形鏈表 II 雙指針法
    環(huán)形列表需要使用雙指針法,兩指針相遇則存在環(huán)捏肢,這題可能不需要數(shù)學推導奈籽,知道快慢指針由于速度不同終將相遇即可,而對于 II 這道題需要判斷環(huán)的入口位置鸵赫,我雖然能想到雙指針衣屏,但不知道需要數(shù)學推導出相遇位置與入口位置之間的關系(吃一塹長一智,我覺得在做題的時候辩棒,如果知道了大體的方法勾拉,但方法的結束點和最終要達成的目的看似沒什么聯(lián)系,先想想貪心算法蒙一下盗温,實在不行藕赞,看看有沒有什么數(shù)學上的值的關系,當時我能手動模擬一下也好啊卖局,說不定就發(fā)現(xiàn)了斧蜕,后悔)
    模擬圖

    官方題解的公式我覺得有點問題,下面是我的公式:
    2(F+a)=F+n(a+b)+a (n表示快指針比慢指針多走的圈數(shù))
    F=n(a+b)-a=(n-1)(a+b)+b
    也就是說無論n取何值砚偶,從head出發(fā)的速度為1的指針和從相遇點出發(fā)的速度為1的指針批销,一定會在入口處相遇
/*寫給自己:注意fast和low的起點必須一樣,和之前的程序有一點小小的不同染坯,之前不用考慮是否起點一致均芽,只要能相遇就行
在這里如果起點不一致的話,不能同時出發(fā)然后相遇于入口點单鹿,需要添加一些常數(shù)來補充*/
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        if(head==NULL || head->next==NULL) return NULL;
        ListNode* low=head;
        ListNode* fast=head;
        
        while(fast!=NULL && fast->next!=NULL){
            
            low=low->next;
            fast=fast->next->next;
            if(fast==low) break;
        }

        if(fast==NULL|| fast->next==NULL) return NULL;

        ListNode* p=head;
        while(p!=low){
            p=p->next;
            low=low->next;
        }
        return low;
    }
};

2020.9.15

這幾天因為科研上的一些問題掀宋,沒有做題,今天抽出點時間仲锄,準備刷leetcode的數(shù)組分類下的題目劲妙,就從簡單的開始吧。

  • 轉置矩陣 行列交換
  • ??主要元素
    摩爾投票法(默認存在眾數(shù)的情況下) 本題最后要加上一個循環(huán)來進行驗證
  • 有序數(shù)組的平方
    一定不要忽略“有序”這個詞儒喊,使用雙指針法
  • 三個數(shù)的最大乘積
    貪心镣奋,排序后,最大乘積只可能出現(xiàn)在兩種情況下
  • 存在連續(xù)三個奇數(shù)的數(shù)組
  • 存在重復元素 II
    是一個處理不好就會超時的題怀愧,O(nlogn)排序后就會超時
    解決方法:k的滑動窗口侨颈,Set(hashset)
    ?總結:
    題型:查找是否存在值為x的元素余赢,可能還需要確定它的位置
    方法:map——我目前做的題不多,我認為用到map的地方都有一個相似的地方:與數(shù)組相比哈垢,map將數(shù)組的值作為索引妻柒,而將數(shù)組的下標作為map的數(shù)值,這樣查找某個元素的速度就會很快温赔。
    不能簡單的用數(shù)組來實現(xiàn)蛤奢,因為測試樣例中可能有負值鬼癣,例如[-1,-1]
  • 種花問題
    模擬陶贼;另一個思路,數(shù)連續(xù)0的位置待秃,然后直接計算之間可以放多少花
  • 翻轉圖像 聽我的拜秧,直接翻
  • 找出井字棋的獲勝者 模擬

2020.9.18

2020.9.21

2020.9.24

2020.9.27

2020.9.28

美麗的早晨從刷幾道題開始暖庄;用java寫幾道簡單題

2020.9.29

2020.9.30


數(shù)組的解題方法

1、暴力再尋求優(yōu)化
2培廓、二分(或者需要先自行排序惹悄,再使用二分)
3、遞歸
4肩钠、(窗口方法)
5泣港、雙指針法(快慢指針法,兩個指針的前進速度不同价匠,前進的判斷條件不同当纱,在一個for循環(huán)中完成兩個for循環(huán)的工作量) 考慮同時從左邊開始,同時從右邊開始踩窖,一左一右開始坡氯,都想一遍,不要限制思維
6洋腮、摩爾投票法
(隨著刷題持續(xù)增加)
7廉沮、hash或者數(shù)組,更換索引和數(shù)值的關系
8徐矩、貪心方法:思考如何從當前元素出發(fā)滞时,構造出符合題目條件的樣子,在這個過程中滤灯,再考慮把其他的方法(排列組合等)用進來

hash:

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曼玩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窒百,更是在濱河造成了極大的恐慌黍判,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篙梢,死亡現(xiàn)場離奇詭異顷帖,居然都是意外死亡,警方通過查閱死者的電腦和手機渤滞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門贬墩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妄呕,你說我怎么就攤上這事陶舞。” “怎么了绪励?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵肿孵,是天一觀的道長。 經(jīng)常有香客問我疏魏,道長停做,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任大莫,我火速辦了婚禮蛉腌,結果婚禮上,老公的妹妹穿的比我還像新娘葵硕。我一直安慰自己眉抬,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布懈凹。 她就那樣靜靜地躺著蜀变,像睡著了一般。 火紅的嫁衣襯著肌膚如雪介评。 梳的紋絲不亂的頭發(fā)上库北,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音们陆,去河邊找鬼寒瓦。 笑死,一個胖子當著我的面吹牛坪仇,可吹牛的內(nèi)容都是我干的杂腰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椅文,長吁一口氣:“原來是場噩夢啊……” “哼喂很!你這毒婦竟也來了惜颇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤少辣,失蹤者是張志新(化名)和其女友劉穎凌摄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓帅,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡锨亏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忙干。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片器予。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖豪直,靈堂內(nèi)的尸體忽然破棺而出劣摇,到底是詐尸還是另有隱情珠移,我是刑警寧澤弓乙,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钧惧,受9級特大地震影響暇韧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜浓瞪,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一懈玻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乾颁,春花似錦涂乌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诅妹,卻和暖如春罚勾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吭狡。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工尖殃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人划煮。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓送丰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弛秋。 傳聞我的和親對象是個殘疾皇子器躏,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355