劍指Offer(三)

題目十一:二進(jìn)制中1的個數(shù)

題目描述:
輸入一個整數(shù),輸出該數(shù)二進(jìn)制表示中1的個數(shù)。其中負(fù)數(shù)用補(bǔ)碼表示。

解題思路:
如果一個整數(shù)不為0掀潮,那么這個整數(shù)至少有一位是1。如果我們把這個整數(shù)減1琼富,那么原來處在整數(shù)最右邊的1就會變?yōu)?仪吧,原來在1后面的所有的0都會變成1(如果最右邊的1后面還有0的話)。其余所有位將不會受到影響
舉個例子:一個二進(jìn)制數(shù)1100鞠眉,從右邊數(shù)起第三位是處于最右邊的一個1薯鼠。減去1后,第三位變成0械蹋,它后面的兩位0變成了1出皇,而前面的1保持不變,因此得到的結(jié)果是1011.我們發(fā)現(xiàn)減1的結(jié)果是把最右邊的一個1開始的所有位都取反了朝蜘。這個時候如果我們再把原來的整數(shù)和減去1之后的結(jié)果做與運(yùn)算,從原來整數(shù)最右邊一個1那一位開始所有位都會變成0涩金。如1100&1011=1000.也就是說谱醇,把一個整數(shù)減去1暇仲,再和原整數(shù)做與運(yùn)算,會把該整數(shù)最右邊一個1變成0.那么一個整數(shù)的二進(jìn)制有多少個1副渴,就可以進(jìn)行多少次這樣的操作奈附。

    public int NumberOf1(int n) {
        int count = 0;
        while(n!= 0){
            count++;
            n = n & (n - 1);
         }
        return count;
    }

題目十二:數(shù)值的整數(shù)次方

題目描述:
給定一個double類型的浮點(diǎn)數(shù)base和int類型的整數(shù)exponent。求base的exponent次方煮剧。

解題思路:
使用for循環(huán)相乘及得出結(jié)果斥滤,判斷最終是正數(shù)次方還是負(fù)數(shù)次方。

    public double Power(double base, int exponent) {

        double result = 1;

        for(int i = 0; i < Math.abs(exponent); i++){
            result *= base;
        }

        if(exponent < 0){
            result = 1 / result;
        }

        return result;
    }

題目十三:調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

題目描述:
輸入一個整數(shù)數(shù)組勉盅,實(shí)現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序佑颇,使得所有的奇數(shù)位于數(shù)組的前半部分,所有的偶數(shù)位于位于數(shù)組的后半部分草娜,并保證奇數(shù)和奇數(shù)挑胸,偶數(shù)和偶數(shù)之間的相對位置不變。

解題思路:
類似插入排序算法宰闰,創(chuàng)建一個奇數(shù)個數(shù)指針茬贵,循環(huán)整個數(shù)組,遇到奇數(shù)就移到奇數(shù)個數(shù)指針的位置移袍,然后中間移動位數(shù)的數(shù)組向右移(順次移動)解藻。


    public void reOrderArray(int [] array) {
        
        int current = 0;

        for(int i = 0; i < array.length; i++){

            if(array[i] % 2 == 1){
                //奇數(shù)
                int a = array[i];
                for(int j = i; j > current; j--){
                    array[j] = array[j - 1];
                }
                array[current] = a;
                current++;
            }

        }

    }

題目十四:鏈表中倒數(shù)第k個結(jié)點(diǎn)

題目描述:
輸入一個鏈表,輸出該鏈表中倒數(shù)第k個結(jié)點(diǎn)葡盗。

解題思路:
要輸出的這個節(jié)點(diǎn)的正數(shù)值 = 總數(shù) - K螟左;

    public ListNode FindKthToTail(ListNode head, int k) {

        if(head==null||k<=0){
            return null;
        }
        //兩個指針都指向頭結(jié)點(diǎn)
        ListNode pre = head;
        ListNode p = head;

        //記錄k值
        int a = k;
        //記錄節(jié)點(diǎn)的個數(shù)
        int count = 0;

        //p指針先跑,并且記錄節(jié)點(diǎn)數(shù)戳粒,當(dāng)p指針跑了k-1個節(jié)點(diǎn)后路狮,pre指針開始跑,
        //當(dāng)p指針跑到最后時蔚约,pre所指指針就是倒數(shù)第k個節(jié)點(diǎn)
        while (p != null){
            p = p.next;
            count++;
            if(k < 1){
                pre = pre.next;
            }
            k--;
        }

        //如果節(jié)點(diǎn)個數(shù)小于所求的倒數(shù)第k個節(jié)點(diǎn)奄妨,則返回空
        if(count < a){
            return null;
        }
        return pre;
    }

題目十五:反轉(zhuǎn)鏈表

題目描述:
輸入一個鏈表,反轉(zhuǎn)鏈表后苹祟,輸出鏈表的所有元素砸抛。

解題思路:
next = head.next;//首先記錄當(dāng)前節(jié)點(diǎn)的下一個節(jié)點(diǎn),(保存起來)
head.next = pre;//讓當(dāng)前節(jié)點(diǎn)指向前一個節(jié)點(diǎn)树枫,因為要反序嘛
pre = head;//讓前一個節(jié)點(diǎn)值直焙,取代當(dāng)前的節(jié)點(diǎn)值。因為要繼續(xù)向下走
head = next;//讓下一個節(jié)點(diǎn)砂轻,取代當(dāng)前節(jié)點(diǎn)奔誓。同樣是向下走,為下一次循環(huán)做準(zhǔn)備

    public ListNode ReverseList(ListNode head) {
        
        ListNode pre = null;
        ListNode next = null;

        while (head != null){
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }

        return pre;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搔涝,一起剝皮案震驚了整個濱河市厨喂,隨后出現(xiàn)的幾起案子和措,更是在濱河造成了極大的恐慌,老刑警劉巖蜕煌,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件派阱,死亡現(xiàn)場離奇詭異,居然都是意外死亡斜纪,警方通過查閱死者的電腦和手機(jī)贫母,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒刚,“玉大人腺劣,你說我怎么就攤上這事∥北” “怎么了誓酒?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贮聂。 經(jīng)常有香客問我靠柑,道長,這世上最難降的妖魔是什么吓懈? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任歼冰,我火速辦了婚禮,結(jié)果婚禮上耻警,老公的妹妹穿的比我還像新娘隔嫡。我一直安慰自己,他們只是感情好甘穿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布腮恩。 她就那樣靜靜地躺著,像睡著了一般温兼。 火紅的嫁衣襯著肌膚如雪秸滴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天募判,我揣著相機(jī)與錄音荡含,去河邊找鬼。 笑死届垫,一個胖子當(dāng)著我的面吹牛释液,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播装处,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼误债,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寝蹈,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤糟袁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后躺盛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡形帮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年槽惫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩撑。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡界斜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出合冀,到底是詐尸還是另有隱情各薇,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布君躺,位于F島的核電站峭判,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏棕叫。R本人自食惡果不足惜林螃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俺泣。 院中可真熱鬧疗认,春花似錦、人聲如沸伏钠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟掂。三九已至缎浇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間打掘,已是汗流浹背华畏。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尊蚁,地道東北人亡笑。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像横朋,于是被迫代替她去往敵國和親仑乌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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

  • 劍指Offer筆試題(1) 題目來源:牛客網(wǎng) 題目一 調(diào)整數(shù)組序列使奇數(shù)位于偶數(shù)序列前 描述: 輸入一個整數(shù)數(shù)組...
    Torang閱讀 1,419評論 0 6
  • 說明: 本文中出現(xiàn)的所有算法題皆來自盼酰客網(wǎng)-劍指Offer在線編程題衙传,在此只是作為轉(zhuǎn)載和記錄,用于本人學(xué)習(xí)使用厕九,不...
    秋意思寒閱讀 1,155評論 1 1
  • 注意:本文適用于已刷過題目蓖捶,想短短幾分鐘快速簡單回顧的情況。沒看過《劍指offer》的讀者建議先閱讀下扁远。 斐波那契...
    FeelsChaotic閱讀 1,725評論 2 8
  • 劍指offer 最近在趴∮悖客網(wǎng)上刷劍指offer的題目,現(xiàn)將題目和答案(均測試通過)總結(jié)如下: 二維數(shù)組的查找 替換...
    閆阿佳閱讀 907評論 0 10
  • 劍指 offer 在一個二維數(shù)組中畅买,每一行都按照從左到右遞增的順序排序并闲,每一列都按照從上到下遞增的順序排序。請完成...
    faremax閱讀 2,212評論 0 7