劍指offer讀書筆記一

一、 旋轉(zhuǎn)數(shù)組(數(shù)組開始有序),尋找最小數(shù)蛀蜜。(比如0,1,2,3,4,5,6可以旋轉(zhuǎn)為4,5,6,0,1,2,3等)特碳。

旋轉(zhuǎn)數(shù)組特性:

  1. 部分有序诚亚,即變成兩個局部有序(但又特例)。
  2. 前面的有序子數(shù)組中的數(shù)總是大于等于后面有序子數(shù)組中的數(shù)(也有特例)午乓。
  3. 特例是當旋轉(zhuǎn)為0或者剛好為數(shù)組長度的整數(shù)倍時站宗,數(shù)組變回最開始的數(shù)組,即有序而非局部有序益愈,還有一個特例是大部分元素都相等梢灭。

突破點:

  1. 因為是有序的(盡管是局部有序),我們還是可以利用這個有序的特性通過二分查找來解決問題蒸其。
  2. 傳統(tǒng)的二分查找是通過兩個下標指針來指示我們要查找元素的的范圍敏释,并且不停折半縮小范圍,縮小范圍的同時讓我們所查找的元素位置夾在兩個下標之間摸袁;而這題也是類似钥顽,只是縮小范圍的時候,判斷方法有所不同弄靠汁,即上面的特性2蜂大,中間元素如果大于等于前面元素,則說明最小值在中間元素和以后蝶怔,如果中間元素小于等于后面的元素奶浦,則說明最小值在中間值以前(包括中間值)。
  3. 特例處理踢星,如果旋轉(zhuǎn)為數(shù)組的整數(shù)倍長度時直接返回第0個袁術(shù)澳叉,如果大部分元素都相等時,使得中間值a[left]和a[right]以及a[mid]均相等斩狱,則采用順序查找耳高。

二、 斐波那契數(shù)列

常見題目:

  1. 寫一個函數(shù)所踊,輸入n泌枪,求斐波那契數(shù)列的第n項。

     f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2);
    
  2. 一只青蛙一次可以跳上1級臺階秕岛,也可以跳上2級臺階碌燕。求改青蛙跳上一個n級臺階總共有多少種跳法误证。

  3. 我們可以用2 X 1 的小矩形橫著或者豎著去覆蓋更大的矩形。請問8個2 X 1的小矩形無重復(fù)的覆蓋一個2 X 8 的大矩形修壕,總共有多少種方法愈捅?

這些題目都很類似,數(shù)列的第n項我們把它當做第n種狀態(tài)慈鸠,改變當前狀態(tài)的方式(改變后為不同于當前狀態(tài)的兩種不同狀態(tài))通常有兩種蓝谨。所以當前狀態(tài)是由前面兩種不同狀態(tài)的結(jié)果的和。

三青团、 位運算

一個整數(shù)n(大于0)減去1譬巫,在二進制的表示中的特點,因為二進制的表示中督笆,一個位不是0就是1芦昔,如果是1,則減1后變?yōu)?娃肿,運算就此結(jié)束咕缎,而如果該位是0,則該位向前借1即該位變?yōu)?再減去1變?yōu)?料扰,因為高位被借1其實也就相當于減1凭豪,在該位的運算與前面類似,直到遇到1记罚,運算才結(jié)束墅诡。
仔細看運算過程發(fā)現(xiàn),有如下特點:

  1. 運算會在遇到最右邊的第一個1結(jié)束桐智。
  2. 運算使得包括最右邊第一個1右邊的所有位都變得和原來相反末早,結(jié)合第1特性,運算后的二進制表示變?yōu)閤xxx01111(原來為xxxx10000)说庭。
  3. 如果與原來的整數(shù)做與位運算然磷,則獲得效果是將最右邊的1變?yōu)?.

四、 快速冪的理解

求x的n次方

快速冪的思路就是把n分解為若干2的冪之和刊驴,然后從低次冪開始求姿搜,由于高次冪可以直接由低次冪求得,因此可以非常高效得求得捆憎。

例如求 x 的 10次冪舅柜,10可以分解為8 + 2(二進制表示為1000,10)
x的10次冪等于x的8次冪乘以x的2次冪,x的2次冪等于x * x, x的8次冪則等于4個x的2次冪相乘躲惰。

double pow(double base, int n)
{
    double res = 0.0;
    if(n == 0)
        return 1;
    while(n & 1 == 0){
        base *= base;
        n >= 1;
    }
    res = base;
    n >= 1;
    while(n){
        base *= base;
        if(n & 1)
            res *= base; 
        n >= 1;
    }
    return res;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末致份,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子础拨,更是在濱河造成了極大的恐慌氮块,老刑警劉巖绍载,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滔蝉,居然都是意外死亡击儡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門蝠引,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阳谍,“玉大人,你說我怎么就攤上這事螃概”呃ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵谅年,是天一觀的道長。 經(jīng)常有香客問我肮韧,道長融蹂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任弄企,我火速辦了婚禮超燃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拘领。我一直安慰自己意乓,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布约素。 她就那樣靜靜地躺著届良,像睡著了一般。 火紅的嫁衣襯著肌膚如雪圣猎。 梳的紋絲不亂的頭發(fā)上士葫,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音送悔,去河邊找鬼慢显。 笑死,一個胖子當著我的面吹牛欠啤,可吹牛的內(nèi)容都是我干的荚藻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼洁段,長吁一口氣:“原來是場噩夢啊……” “哼应狱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眉撵,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤侦香,失蹤者是張志新(化名)和其女友劉穎落塑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罐韩,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡憾赁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了散吵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙考。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矾睦,靈堂內(nèi)的尸體忽然破棺而出晦款,到底是詐尸還是另有隱情,我是刑警寧澤枚冗,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布缓溅,位于F島的核電站,受9級特大地震影響赁温,放射性物質(zhì)發(fā)生泄漏坛怪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一股囊、第九天 我趴在偏房一處隱蔽的房頂上張望袜匿。 院中可真熱鬧,春花似錦稚疹、人聲如沸居灯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怪嫌。三九已至,卻和暖如春柳沙,著一層夾襖步出監(jiān)牢的瞬間喇勋,已是汗流浹背蔚约。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工毫缆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留字逗,地道東北人骇塘。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓壁酬,卻偏偏與公主長得像嘹锁,于是被迫代替她去往敵國和親膜赃。 傳聞我的和親對象是個殘疾皇子诉稍,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,506評論 1 51
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型妙真。 運用指針編程是C語言最主要的風(fēng)格之一缴允。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,424評論 3 44
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法练般,內(nèi)部類的語法矗漾,繼承相關(guān)的語法,異常的語法薄料,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • 標簽:ios開發(fā)入門 1` isKindOfClass用于判斷某個對象是否為指定類,或者指定類的父類的對象 2` ...
    哇次喲累閱讀 1,655評論 0 0
  • 世界上有一座神奇的紀念碑敞贡,碑文上鐫刻的是那一串串腳印。記載著驚世的遠征摄职、艱難的跋涉誊役。也記載著凄楚的彷徨、短暫的哀嘆...
    逍遙女郎閱讀 371評論 1 1