腾讯技术研究类和数据分析第二次笔试(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)

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值