<劍指Offer>面試題21: 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

題目描述一队寇、

  • 輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序章姓,
  • 使得所有的奇數(shù)位于數(shù)組的前半部分佳遣,所有的偶數(shù)位于數(shù)組的后半部分,

題目解讀

  • 劍指Offer 129

代碼

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    bool par(int x){
        return x&1; // 偶數(shù)返回0啤覆,奇數(shù)返回1
    }

    void reOrderArray(vector<int> &array) {
        int left = 0;
        int right = array.size() - 1;
        int temp;

        while(left < right){
            // 從前到后找偶數(shù),碰到奇數(shù)跳過
            while(left < right && par(array[left])){
                left ++;
            }

            // 從后往前找奇數(shù),碰到偶數(shù)跳過
            while(left < right && !par(array[right])){
                right --;
            }

            if(left < right){
                temp = array[left];
                array[left] = array[right];
                array[right] = temp;
            }
        }
    }

    vector<int> create(vector<int> array){
        array.push_back(1);
        array.push_back(2);
        array.push_back(3);
        array.push_back(4);
        array.push_back(5);
        array.push_back(6);
        array.push_back(7);

        return array;
    }

    void print_vector(vector<int> array){
        for(int i=0; i < array.size(); i++){
            cout<<array[i]<<" ";
        }
        cout<<endl;
    }
};

main(){
    Solution ss;
    vector<int> array;

    array = ss.create(array);
    ss.print_vector(array);
    ss.reOrderArray(array);
    ss.print_vector(array);
}

題目描述二苍日、

  • 輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序
  • 使得所有的奇數(shù)位于數(shù)組的前半部分窗声,所有的偶數(shù)位于數(shù)組的后半部分
  • 并保證奇數(shù)和奇數(shù)相恃,偶數(shù)和偶數(shù)之間的相對位置不變 (例如:輸入[1, 2, 3, 4, 5, 6, 7],輸出為: [1, 3, 5, 7, 2, 4, 6])

題目解讀

  • 劍指Offer 上沒有題目描述中的第三行話
  • 題目思路是:新建兩個數(shù)組存放奇數(shù)和偶數(shù)笨觅,然后將奇輸數(shù)組和偶數(shù)數(shù)組分別放到array數(shù)組中去

代碼

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    bool par(int x){
        return x&1; // 偶數(shù)返回0拦耐,奇數(shù)返回1
    }

    void reOrderArray(vector<int> &array) {
        vector<int> qi;
        vector<int> ou;

        for(int i=0; i < array.size(); i++){
            if(par(array[i])){
                qi.push_back(array[i]);
            }
            else{
                ou.push_back(array[i]);
            }
        }

        int qi_len = qi.size();
        for(int i=0; i < qi_len; i++){
            array[i] = qi[i];
        }

        int ou_len = ou.size();
        for(int i=0; i < ou_len; i++){
            array[qi_len + i] = ou[i];
        }
    }

    vector<int> create(vector<int> array){
        array.push_back(1);
        array.push_back(2);
        array.push_back(3);
        array.push_back(4);
        array.push_back(5);
        array.push_back(6);
        array.push_back(7);

        return array;
    }

    void print_vector(vector<int> array){
        for(int i=0; i < array.size(); i++){
            cout<<array[i]<<" ";
        }
        cout<<endl;
    }
};

main(){
    Solution ss;
    vector<int> array;

    array = ss.create(array);
    ss.print_vector(array);
    ss.reOrderArray(array);
    ss.print_vector(array);
}

總結展望

  • 題目還好
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市见剩,隨后出現(xiàn)的幾起案子杀糯,更是在濱河造成了極大的恐慌,老刑警劉巖苍苞,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件固翰,死亡現(xiàn)場離奇詭異,居然都是意外死亡羹呵,警方通過查閱死者的電腦和手機骂际,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冈欢,“玉大人歉铝,你說我怎么就攤上這事〈粘埽” “怎么了太示?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵柠贤,是天一觀的道長。 經(jīng)常有香客問我类缤,道長臼勉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任餐弱,我火速辦了婚禮坚俗,結果婚禮上,老公的妹妹穿的比我還像新娘岸裙。我一直安慰自己猖败,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布降允。 她就那樣靜靜地躺著恩闻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剧董。 梳的紋絲不亂的頭發(fā)上幢尚,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音翅楼,去河邊找鬼尉剩。 笑死,一個胖子當著我的面吹牛毅臊,可吹牛的內(nèi)容都是我干的理茎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼管嬉,長吁一口氣:“原來是場噩夢啊……” “哼皂林!你這毒婦竟也來了?” 一聲冷哼從身側響起蚯撩,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤础倍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胎挎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沟启,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年犹菇,在試婚紗的時候發(fā)現(xiàn)自己被綠了德迹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡项栏,死狀恐怖浦辨,靈堂內(nèi)的尸體忽然破棺而出蹬竖,到底是詐尸還是另有隱情沼沈,我是刑警寧澤流酬,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站列另,受9級特大地震影響芽腾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜页衙,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一摊滔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧店乐,春花似錦艰躺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至廉侧,卻和暖如春页响,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背段誊。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工闰蚕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人连舍。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓没陡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親索赏。 傳聞我的和親對象是個殘疾皇子诗鸭,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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