网易2018校园招聘:重排数列 [python]
生活随笔
收集整理的這篇文章主要介紹了
网易2018校园招聘:重排数列 [python]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
'''
[編程題] 重排數列
時間限制:1秒
空間限制:100768K
小易有一個長度為N的正整數數列A = {A[1], A[2], A[3]..., A[N]}。
牛博士給小易出了一個難題:
對數列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
3
1 10 100
4
1 2 3 4
輸出例子1:
Yes
No
'''
'''
解題思路:分析問題
? 把問題轉為求數列中的數是2的倍數的個數(非四的倍數),4的倍數的個數和其他數的個數
? 因為一個4的倍數可以和一個非2非4倍數的組組成目標數列
? 兩個2的倍數可以組成目標序列
? 單個2的倍數必須和4的倍數組成目標數列
? 所以我們先把2的倍數都放在一起,這樣只需要再其后放置一個4的倍數就可以組成目標數列
? 所以:如果沒有2的倍數,4的倍數的數目只要大于等于總數的一半就可以組成目標數列
? ? ? ? 如果有2的倍數,4的倍數的數目只要大于等于其他數目的個數就可以組成目標數列
'''
'''
代碼運行結果:
答案正確:恭喜!您提交的程序通過了所有的測試用例
[編程題] 重排數列
時間限制:1秒
空間限制:100768K
小易有一個長度為N的正整數數列A = {A[1], A[2], A[3]..., A[N]}。
牛博士給小易出了一個難題:
對數列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
3
1 10 100
4
1 2 3 4
輸出例子1:
Yes
No
'''
'''
解題思路:分析問題
? 把問題轉為求數列中的數是2的倍數的個數(非四的倍數),4的倍數的個數和其他數的個數
? 因為一個4的倍數可以和一個非2非4倍數的組組成目標數列
? 兩個2的倍數可以組成目標序列
? 單個2的倍數必須和4的倍數組成目標數列
? 所以我們先把2的倍數都放在一起,這樣只需要再其后放置一個4的倍數就可以組成目標數列
? 所以:如果沒有2的倍數,4的倍數的數目只要大于等于總數的一半就可以組成目標數列
? ? ? ? 如果有2的倍數,4的倍數的數目只要大于等于其他數目的個數就可以組成目標數列
'''
'''
代碼運行結果:
答案正確:恭喜!您提交的程序通過了所有的測試用例
'''
t = int(input())ns = [] arrays = [] for each in range(t):ns.append(int(input()))arrays.append([i for i in map(int, input().split())])count = 0 results = [] while count < t:n = ns[count]array = arrays[count]fours = 0twos = 0others = 0for each in array:if each % 4 == 0:fours += 1elif each % 2 == 0:twos += 1else:others += 1if twos == 0:if fours >= n // 2:results.append('Yes')else:results.append('No')else:if fours >= others:results.append('Yes')else:results.append('No')count += 1for each in results:print(each)總結
以上是生活随笔為你收集整理的网易2018校园招聘:重排数列 [python]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java深入理解深拷贝和浅拷贝的区别
- 下一篇: Spring Boot进阶(09):集成