騰訊技術研究類和數據分析第二次筆試(2019.9.1)第一道編程題AC

1 AC

T = int(input())
while T:
    T -= 1
    n = int(input())
    A = list(map(int, input().split()))
    m = [0] * n
    for i in A:
        m[i-1] += 1

    if max(m) > len(A) >> 1:
        print('NO')
    else:
        print('YES')

只要當出現次數最多的小於等於長度的一半時,就可以了。

4 超時了,60%,大佬看看哪邊可以簡化的

n = int(input())
T = input()
m = int(input())
count = 0
for _ in range(m):
    s = input()
    if s not in T:
        continue
    length = [int(i/len(s)) for i in range(len(T) + 1) if i % len(s) == 0][:-1]
    for i in length:
        ss = (i + 1) * s
        if ss not in T:
            break
        if i == length[-1] and len(ss) <= len(T):
            if len(ss) < len(T) and T[(len(ss) - len(T)):] != s[:(len(T) - len(ss))]:
                break
            count += 1

print(count)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章