Remove Exactly One Element for an Alternating 0-1 Array


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type

題目說明

請撰寫一個程式,讀取一個長度為20的整數陣列,陣列的每個元素為0或1。程式需檢查是否可以藉由移除恰好一個元素,使得剩下的陣列形成0與1交錯排列。

  1. 如果可以移除恰好某一個元素來達成條件,輸出該元素的索引。如果有兩個元素滿足該條件,則移除索引值較大的那個。
  2. 如果原本的陣列已經是0與1交錯排列,則輸出-1。
  3. 如果無法藉由移除恰好一個元素達成交錯排列(例如需要移除兩個或更多元素才能實現交錯),則輸出-2。

交錯排列的定義如下:

  • 陣列中第1個元素為0,第2個元素為1,以此類推,或者
  • 陣列中第1個元素為1,第2個元素為0,以此類推。

進階提示:
除了輸入測資之外,主要邏輯只需要用一個單層迴圈。解答用到的"if"不會超過2個,同時完全不需使用else。

輸入

  1. 輸入一行包含20個整數,數字之間以空格分隔。
  2. 每個整數為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

There are no comments at the moment.