网易2018校园招聘:重排数列 [python]
生活随笔
收集整理的這篇文章主要介紹了
网易2018校园招聘:重排数列 [python]
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
'''
[編程題] 重排數(shù)列
時(shí)間限制:1秒
空間限制:100768K
小易有一個(gè)長度為N的正整數(shù)數(shù)列A = {A[1], A[2], A[3]..., A[N]}。
牛博士給小易出了一個(gè)難題:
對數(shù)列A進(jìn)行重新排列,使數(shù)列A滿足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍數(shù)。
小易現(xiàn)在需要判斷一個(gè)數(shù)列是否可以重排之后滿足牛博士的要求。?
輸入描述:
輸入的第一行為數(shù)列的個(gè)數(shù)t(1 ≤ t ≤ 10),
接下來每兩行描述一個(gè)數(shù)列A,第一行為數(shù)列長度n(1 ≤ n ≤ 10^5)
第二行為n個(gè)正整數(shù)A[i](1 ≤ A[i] ≤ 10^9)
輸出描述:
對于每個(gè)數(shù)列輸出一行表示是否可以滿足牛博士要求,如果可以輸出Yes,否則輸出No。
輸入例子1:
2
3
1 10 100
4
1 2 3 4
輸出例子1:
Yes
No
'''
'''
解題思路:分析問題
? 把問題轉(zhuǎn)為求數(shù)列中的數(shù)是2的倍數(shù)的個(gè)數(shù)(非四的倍數(shù)),4的倍數(shù)的個(gè)數(shù)和其他數(shù)的個(gè)數(shù)
? 因?yàn)橐粋€(gè)4的倍數(shù)可以和一個(gè)非2非4倍數(shù)的組組成目標(biāo)數(shù)列
? 兩個(gè)2的倍數(shù)可以組成目標(biāo)序列
? 單個(gè)2的倍數(shù)必須和4的倍數(shù)組成目標(biāo)數(shù)列
? 所以我們先把2的倍數(shù)都放在一起,這樣只需要再其后放置一個(gè)4的倍數(shù)就可以組成目標(biāo)數(shù)列
? 所以:如果沒有2的倍數(shù),4的倍數(shù)的數(shù)目只要大于等于總數(shù)的一半就可以組成目標(biāo)數(shù)列
? ? ? ? 如果有2的倍數(shù),4的倍數(shù)的數(shù)目只要大于等于其他數(shù)目的個(gè)數(shù)就可以組成目標(biāo)數(shù)列
'''
'''
代碼運(yùn)行結(jié)果:
答案正確:恭喜!您提交的程序通過了所有的測試用例
[編程題] 重排數(shù)列
時(shí)間限制:1秒
空間限制:100768K
小易有一個(gè)長度為N的正整數(shù)數(shù)列A = {A[1], A[2], A[3]..., A[N]}。
牛博士給小易出了一個(gè)難題:
對數(shù)列A進(jìn)行重新排列,使數(shù)列A滿足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍數(shù)。
小易現(xiàn)在需要判斷一個(gè)數(shù)列是否可以重排之后滿足牛博士的要求。?
輸入描述:
輸入的第一行為數(shù)列的個(gè)數(shù)t(1 ≤ t ≤ 10),
接下來每兩行描述一個(gè)數(shù)列A,第一行為數(shù)列長度n(1 ≤ n ≤ 10^5)
第二行為n個(gè)正整數(shù)A[i](1 ≤ A[i] ≤ 10^9)
輸出描述:
對于每個(gè)數(shù)列輸出一行表示是否可以滿足牛博士要求,如果可以輸出Yes,否則輸出No。
輸入例子1:
2
3
1 10 100
4
1 2 3 4
輸出例子1:
Yes
No
'''
'''
解題思路:分析問題
? 把問題轉(zhuǎn)為求數(shù)列中的數(shù)是2的倍數(shù)的個(gè)數(shù)(非四的倍數(shù)),4的倍數(shù)的個(gè)數(shù)和其他數(shù)的個(gè)數(shù)
? 因?yàn)橐粋€(gè)4的倍數(shù)可以和一個(gè)非2非4倍數(shù)的組組成目標(biāo)數(shù)列
? 兩個(gè)2的倍數(shù)可以組成目標(biāo)序列
? 單個(gè)2的倍數(shù)必須和4的倍數(shù)組成目標(biāo)數(shù)列
? 所以我們先把2的倍數(shù)都放在一起,這樣只需要再其后放置一個(gè)4的倍數(shù)就可以組成目標(biāo)數(shù)列
? 所以:如果沒有2的倍數(shù),4的倍數(shù)的數(shù)目只要大于等于總數(shù)的一半就可以組成目標(biāo)數(shù)列
? ? ? ? 如果有2的倍數(shù),4的倍數(shù)的數(shù)目只要大于等于其他數(shù)目的個(gè)數(shù)就可以組成目標(biāo)數(shù)列
'''
'''
代碼運(yùn)行結(jié)果:
答案正確:恭喜!您提交的程序通過了所有的測試用例
'''
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)總結(jié)
以上是生活随笔為你收集整理的网易2018校园招聘:重排数列 [python]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java深入理解深拷贝和浅拷贝的区别
- 下一篇: 在unity中创建python机器学习环