Remove Exactly One Element for an Alternating 0-1 Array
題目說明
請撰寫一個程式,讀取一個長度為20的整數陣列,陣列的每個元素為0或1。程式需檢查是否可以藉由移除恰好一個元素,使得剩下的陣列形成0與1交錯排列。
- 如果可以移除恰好某一個元素來達成條件,輸出該元素的索引。如果有兩個元素滿足該條件,則移除索引值較大的那個。
- 如果原本的陣列已經是0與1交錯排列,則輸出-1。
- 如果無法藉由移除恰好一個元素達成交錯排列(例如需要移除兩個或更多元素才能實現交錯),則輸出-2。
交錯排列的定義如下:
- 陣列中第1個元素為0,第2個元素為1,以此類推,或者
- 陣列中第1個元素為1,第2個元素為0,以此類推。
進階提示:
除了輸入測資之外,主要邏輯只需要用一個單層迴圈。解答用到的"if"不會超過2個,同時完全不需使用else。
輸入
- 輸入一行包含20個整數,數字之間以空格分隔。
- 每個整數為0或1。
輸出
依題目條件輸出一個數字
思考邊界條件時可參考以下提示
- 陣列可能已經是0與1交錯排列。
- 可能必須移除某一特定元素後才能形成交錯排列。
- 陣列可能無法藉由恰好移除一個元素形成交錯排列。
範例輸入 #1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
範例輸出 #1
-1
陣列本身已是交錯排列,無需移除任何元素。
範例輸入 #2
0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1
範例輸出 #2
-2
有三個連續0。無論移除哪個元素,都無法形成交錯排列。
範例輸入 #3
1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
範例輸出 #3
3
移除索引3處的元素1後,陣列可形成交錯排列。
範例輸入 #4
0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1
範例輸出 #4
-2
有兩個連續0與連續1,無法藉由恰好移除一個元素形成交錯排列。
Comments