菜雞挑戰五天刷完劍指offer day1

2021-10-09 05:06:55 字數 1834 閱讀 2268

菜雞,立下乙個小目標,及時更新and總結。

乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

注意:一次可以跳n,不是只能跳1、2。

可以推出:

class solution 

return dp[number];}};

快慢指標,需要注意的是,隨時判斷k是不是有效。

/*

struct listnode

};*/

class solution

while(f)

return l;}};

我永遠記得我第一次面試就栽在翻轉鍊錶,都是淚。

雙指標,pre指向頭,cur指向null,pre->next=cur;cur 與pre同時向前移動。

/*

struct listnode

};*/

class solution

return cur;}};

a.迭代方法:

new乙個新的listnode,因為最後條件是只要有乙個鍊錶遍歷到了最後就退出,所以不要忘記最後將沒有遍歷完的鍊錶放在新煉表中。

/*

struct listnode

};*/

class solution else

cur=cur->next;

}cur->next=phead1 ? phead1:phead2;

return dummy->next;}};

b.遞迴

/*

struct listnode

};*/

class solution else}};

劍指offer,分三步:

1.複製鍊錶,插入複製的節點後,如:a->a'->b->b';

2.random指向複製;

3.分離兩個鍊錶

/*

struct randomlistnode

};*/

class solution

p=phead;

while(p)

randomlistnode *res = phead->next;

randomlistnode *tmp;

p = phead;

while(p->next)

return res; }};

a+b+c = c+b+a;

/*

struct listnode

};*/

class solution

return p2;}};

用快慢指標,快指標兩步,慢指標一步,如果二者相遇,則有環。

畫個圖就知道,讓快指標從煉表頭,慢指標從相遇點,都各自走一步,則再次相遇為入口。

/*

struct listnode

};*/

class solution

//如果沒有環,則fast或者fast->next為空

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

fast=phead;

while(fast!=slow)

return fast;}};

挑戰五天刷完劍指offer day4 1

數字堆 前幾天確實進度有些慢了,三天刷了30 一半左右,希望能挑戰成功。全排列問題,用回溯的方法。在之前知乎的文章中有詳細介紹。方法基本是一模一樣的,這裡就是要去重和字典序排列,那麼用set可以去重和排列。class solution for int i 0 isize i return vecto...

《劍指offer》刷題打卡第1天

面試題1 二維陣列中的查詢 題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。演算法思想 第一步 選取陣列右上角的數字9,將7與9作比較,9 7,又因為9是第四列中最小的乙個數,...

牛客劍指offer刷題記錄(五)

鍊錶的指標域中,除了有指向下乙個節點的鍊錶以外,還有乙個指向隨機節點的指標。struct listnode 常規做法,空間換時間。先常規的將拷貝的節點用next串起來,遍歷一遍原始鍊錶,然後尾插法即可。在尾插的同時,建立乙個由原始節點指標p到拷貝節點指標c的乙個map。再次遍歷原始指標,如果指標p指...