菜雞,立下乙個小目標,及時更新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指...