LintCode 交錯(cuò)正負(fù)數(shù)

題目

給出一個(gè)含有正整數(shù)和負(fù)整數(shù)的數(shù)組鹃觉,重新排列成一個(gè)正負(fù)數(shù)交錯(cuò)的數(shù)組熄攘。

注意事項(xiàng)

不需要保持正整數(shù)或者負(fù)整數(shù)原來(lái)的順序。

樣例
給出數(shù)組[-1, -2, -3, 4, 5, 6],重新排序之后县匠,變成[-1, 5, -2, 4, -3, 6]或者其他任何滿足要求的答案

分析

最簡(jiǎn)單的思路顯然是用兩個(gè)數(shù)組記錄正數(shù)和負(fù)數(shù),最后在遍歷一遍即可

要求原地完成的思路:
兩根指針撒轮,首先判斷正數(shù)多還是負(fù)數(shù)多乞旦,并把多的那一部分移到后半部分,最后兩根指針?lè)謩e遞增二交換即可
具體思路看代碼注釋

代碼

class Solution {
    /**
     * @param A: An integer array.
     * @return: void
     */
    public int[] rerange(int[] A) {
        // Check the input parameter.
        if(A == null || A.length < 3)
            return A;
        
        int n = A.length;
        
        int countPositive = 0;//計(jì)算正數(shù)的個(gè)數(shù)
        
        
        
        // store the positive numbers index.
        int positiveIndex = 0;
        int pos = 1;
        int neg = 0;
        for(int i=0;i<n;i++) {
                if(A[i] > 0) {
                // Put all the positive numbers at in the left part.
                    swap(A,positiveIndex++,i);
                    countPositive++;
                }
        }
        
        if(countPositive > n/2) {
        // If positive numbers are more than negative numbers,
        // Put the positive numbers at first.
            pos = 0;
            neg = 1;
            // Reverse the array.
            
            int left = 0;
            int right = n-1;
            while(left < right) {
                swap(A,left,right);
                left++;
                right--;
            }
        }
        
        while(pos < n && neg <n) {
            while(pos<n && A[pos]>0)
                pos +=2;
            while(neg<n && A[neg]<0)
                neg +=2;
            if(neg >= n || pos>=n)
                break;
            swap(A,pos,neg);
        }
        
        // Reorder the negative and the positive numbers.
       
            // Should move if it is in the range.
            
            // Should move if it is in the range.
       return A; 
   }
   
   public void swap(int[] A, int l, int r) {
       int temp = A[l];
       A[l] = A[r];
       A[r] = temp;
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腔召,一起剝皮案震驚了整個(gè)濱河市杆查,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌臀蛛,老刑警劉巖亲桦,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浊仆,居然都是意外死亡客峭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)抡柿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舔琅,“玉大人,你說(shuō)我怎么就攤上這事洲劣”蛤荆” “怎么了课蔬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)郊尝。 經(jīng)常有香客問(wèn)我二跋,道長(zhǎng),這世上最難降的妖魔是什么流昏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任扎即,我火速辦了婚禮,結(jié)果婚禮上况凉,老公的妹妹穿的比我還像新娘谚鄙。我一直安慰自己,他們只是感情好刁绒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布闷营。 她就那樣靜靜地躺著,像睡著了一般膛锭。 火紅的嫁衣襯著肌膚如雪粮坞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天初狰,我揣著相機(jī)與錄音莫杈,去河邊找鬼。 笑死奢入,一個(gè)胖子當(dāng)著我的面吹牛筝闹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腥光,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼关顷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了武福?” 一聲冷哼從身側(cè)響起议双,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捉片,沒(méi)想到半個(gè)月后平痰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伍纫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宗雇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莹规。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赔蒲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舞虱,我是刑警寧澤欢际,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站砾嫉,受9級(jí)特大地震影響幼苛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焕刮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墙杯。 院中可真熱鬧配并,春花似錦、人聲如沸高镐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嫉髓。三九已至观腊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間算行,已是汗流浹背梧油。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留州邢,地道東北人儡陨。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像量淌,于是被迫代替她去往敵國(guó)和親骗村。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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

  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,216評(píng)論 0 4
  • 刷題啦刷題啦呀枢,劍指offer好像比較有名胚股,所以就在牛客網(wǎng)上刷這個(gè)吧~btw裙秋,刷了一些題發(fā)現(xiàn)編程之美的題好典型袄虐琛!残吩!...
    Cracks_Yi閱讀 418評(píng)論 0 1
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類(lèi)型财忽。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)泣侮; ...
    朱森閱讀 3,430評(píng)論 3 44
  • 多線程的優(yōu)點(diǎn) 資源利用率更好(等待IO的時(shí)間) 程序設(shè)計(jì)在某些情況下更簡(jiǎn)單(一個(gè)線程對(duì)應(yīng)一個(gè)任務(wù)) 程序相應(yīng)更快(...
    進(jìn)擊的勇士閱讀 335評(píng)論 0 0
  • 在和新入門(mén)的壺友交流時(shí)即彪,我經(jīng)常會(huì)被問(wèn)到:買(mǎi)什么壺好,你看看這把壺怎么樣,看中一把壺多少錢(qián)買(mǎi)合適...等等隶校,針對(duì)這些...
    賞壺堂閱讀 199評(píng)論 0 0