小易有乙個長度為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:
231 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...