8 重排數列

2021-08-15 18:24:29 字數 749 閱讀 7102

小易有乙個長度為n的正整數數列a = 。

牛博士給小易出了乙個難題:

對數列a進行重新排列,使數列a滿足所有的a[i] * a[i + 1](1 ≤ i ≤ n - 1)都是4的倍數。

小易現在需要判斷乙個數列是否可以重排之後滿足牛博士的要求。 

輸入描述:

輸入的第一行為數列的個數t(1 ≤ t ≤ 10),

接下來每兩行描述乙個數列a,第一行為數列長度n(1 ≤ n ≤ 10^5)

第二行為n個正整數a[i](1 ≤ a[i] ≤ 10^9)

輸出描述:

對於每個數列輸出一行表示是否可以滿足牛博士要求,如果可以輸出yes,否則輸出no。

輸入例子1:

2

31 10 100

41 2 3 4

輸出例子1:

yes

no

解題思路(參考)

分類討論下。

因此符合要求的排列一定是,所有 2 的倍數相鄰排在一起,所有 4 的倍數和剩下的數相間排列,這些剩下的元素個數不能超過 4 的倍數的數量,不然所有 4 的倍數都被包起來了。

#includeusing namespace std;

int main()

for(int i=0; i=(n-mod2-mod4))//比較個數 剩下的元素個數不能超過 4 的倍數的數量

cout<<"yes"<

213 重排鍊錶

題目描述 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...

143 重排鍊錶

143.重排鍊錶 給定乙個單鏈表 l l0 l1 l n 1 ln 將其重新排列後變為 l0 l n l1 l n 1 l2 l n 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 ...

143 重排鍊錶

題解 時間複雜度 o n 空間複雜度 o n definition for singly linked list.struct listnode listnode int x val x next nullptr listnode int x,listnode next val x next nex...