網(wǎng)易2017春招筆試(調(diào)整隊形)

bg.jpg

一、前言

如果一直有看我的每周面試題的童鞋們厂财,應(yīng)該都知道芋簿,之前的面試題中很少或者說基本沒有程序題,可是開發(fā)崗位的面試是無法避免程序題的璃饱,因此這周來一提程序題与斤。

二、題目

在幼兒園有 n 個小朋友排列為一個隊伍,從左到右一個挨著一個編號為 ( 0 ~ n-1 ) 撩穿。其中有一些是男生磷支,有一些是女生,男生用 ’B’ 表示食寡,女生用 ’G’ 表示齐唆。小朋友們都很頑皮,當一個男生挨著的是女生的時候就會發(fā)生矛盾冻河。作為幼兒園的老師箍邮,你需要讓男生挨著女生或者女生挨著男生的情況最少。你只能在原隊形上進行調(diào)整叨叙,每次調(diào)整只能讓相鄰的兩個小朋友交換位置锭弊,現(xiàn)在需要盡快完成隊伍調(diào)整,你需要計算出最少需要調(diào)整多少次可以讓上述情況最少擂错。例如:

GGBBG -GGBGB -GGGBB
這樣就使之前的兩處男女相鄰變?yōu)橐惶幭噜徫吨停枰{(diào)整隊形 2 次

輸入描述:

輸入數(shù)據(jù)包括一個長度為 n 且只包含 G 和 B 的字符串. n 不超過 50.

輸出描述:

輸出一個整數(shù),表示最少需要的調(diào)整隊伍的次數(shù)

輸入例子:

GGBBG

輸出例子:

2

三钮呀、解題

題目的意思應(yīng)該很好就能理解剑鞍,不能理解的看下給出的例子,基本就能知道題目表達的意思了爽醋。根據(jù)題目的意思蚁署,“男生挨著女生或者女生挨著男生的情況最少”,那么最終調(diào)整的隊形無非就兩個結(jié)果蚂四,第一:男生全部在左光戈,女生全部在隊列的右邊,中間只有一男一女是相挨著的遂赠。第二:要么就是反過來久妆,女生全部在左,男生在右跷睦。也就是假設(shè)長度為 8 的時候筷弦,只要調(diào)整為 BBBBGGGG 或者 GGGGBBBB 就行了。

這是根據(jù)第一個條件進行分析的結(jié)果抑诸,那么我們看第二個條件烂琴,“每次調(diào)整只能讓相鄰的兩個小朋友交換位置,且需要的是最少需要調(diào)整的情況” 哼鬓, 從上面可以知道监右,我們最終需要將隊形調(diào)整成 BBBBGGGG 或者 GGGGBBBB 就可以了,那么調(diào)整的時候我們只需要調(diào)整 B 或者 G 就可以了异希,意思就是說調(diào)整 B 的時候,G 不動,如果調(diào)整 G 称簿,B 不動扣癣。為什么呢?因為只動 B 和只動 G 是等價的憨降。

用 JAVA 來編程的話父虑,我們就只移動 B ,用一個 list 記錄每個 B 所在的位置(從 0 開始),比如 GGBBG , list 中有兩個值授药, 2 和 3 士嚎,大小為 2 ,如果序列為 2 的 B 移動到最左邊需要移動的次數(shù)是 2 次悔叽,也就變成 BGGBG莱衩,序列為 3 的 B 移動到最左邊需要移動的次數(shù)是 3 次,可是因為之前已經(jīng)移動號了一個娇澎,我們只需移動 2 次就行了笨蚁,也就是移動到第一次移動到最左邊的 B 的左邊;所以我們可以對當前每個 B 的下標求和趟庄,每進行一次有用的調(diào)整必然使當前的和 +1 或者 -1括细,最后我們只要計算出當前的和與最終結(jié)果的和的差。

程序地址:https://github.com/TwoWater/Interview/blob/master/Interview/src/com/liangdianshui/AdjustFormation.java


public class AdjustFormation {

    public static void main(String[] args) {
        // 控制臺輸入
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        sc.close();

        int n = s.length();
        if (n <= 0 || n > 50) {
            throw new RuntimeException("the length is too long");
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (s.charAt(i) == 'B') {
                list.add(i);
            }
        }

        int bSize = list.size();
        int indexSum = 0;
        for (int val : list) {
            indexSum += val;
        }
        
        int left = indexSum - bSize * (bSize - 1) / 2;
        int right = bSize * (n - 1) - indexSum - bSize * (bSize - 1) / 2;
        // 移左 或者 移右 戚啥,選擇最少的
        System.out.println(Math.min(left, right));
    }
}

運行的結(jié)果:

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奋单,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猫十,更是在濱河造成了極大的恐慌辱匿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炫彩,死亡現(xiàn)場離奇詭異匾七,居然都是意外死亡,警方通過查閱死者的電腦和手機江兢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門昨忆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杉允,你說我怎么就攤上這事邑贴。” “怎么了叔磷?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵拢驾,是天一觀的道長。 經(jīng)常有香客問我改基,道長繁疤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮稠腊,結(jié)果婚禮上躁染,老公的妹妹穿的比我還像新娘。我一直安慰自己架忌,他們只是感情好吞彤,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叹放,像睡著了一般饰恕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上井仰,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天埋嵌,我揣著相機與錄音,去河邊找鬼糕档。 笑死莉恼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的速那。 我是一名探鬼主播俐银,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼端仰!你這毒婦竟也來了捶惜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤荔烧,失蹤者是張志新(化名)和其女友劉穎吱七,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹤竭,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡踊餐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了臀稚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吝岭。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吧寺,靈堂內(nèi)的尸體忽然破棺而出窜管,到底是詐尸還是另有隱情,我是刑警寧澤稚机,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布幕帆,位于F島的核電站,受9級特大地震影響赖条,放射性物質(zhì)發(fā)生泄漏失乾。R本人自食惡果不足惜常熙,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仗扬。 院中可真熱鬧症概,春花似錦蕾额、人聲如沸早芭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽退个。三九已至,卻和暖如春调炬,著一層夾襖步出監(jiān)牢的瞬間语盈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工缰泡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刀荒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓棘钞,卻偏偏與公主長得像缠借,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宜猜,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

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

  • 1.一種雙核CPU的兩個核能夠同時的處理任務(wù)泼返,現(xiàn)在有n個已知數(shù)據(jù)量的任務(wù)需要交給CPU處理,假設(shè)已知CPU的每個核...
    pretzei閱讀 1,016評論 0 0
  • 問題描述 在幼兒園有n個小朋友排列為一個隊伍姨拥,從左到右一個挨著一個編號為(0~n-1)绅喉。其中有一些是男生,有一些是...
    RobotBerry閱讀 475評論 0 0
  • 在幼兒園有n個小朋友排列為一個隊伍叫乌,從左到右一個挨著一個編號為(0~n-1)柴罐。其中有一些是男生,有一些是女生憨奸,男生...
    六尺帳篷閱讀 483評論 0 1
  • 大部分時候革屠,我們道理都懂:不能再拖啦,deadline啦膀藐;過兩天就考試啦屠阻,書一點沒看吶;手頭上好多事额各,但再刷會朋友...
    Boheatea閱讀 157評論 0 0
  • 我:大頭虾啦,其實我很喜歡你麻诀。你知道我從不套路的 大頭:難怪友誼的大廈說倒就倒痕寓,哈哈哈,我剛醒蝇闭,你準備出發(fā)了嗎 我:畢...
    延陵退閱讀 1,785評論 0 1