题解 | 小红的三带一

小红的三带一

https://www.nowcoder.com/practice/f71aec371e30425dbe3cc509bafe4158

n = int(input())
arr = list(map(int, input().split()))
count = 0
i = 0
 
from collections import Counter
 
while i <= n - 4:
    window = arr[i : i + 4] #创建一个长度为4的窗口,用来扫描数组内的元素
    freq = Counter(window) #这里统计窗口内的元素和对应元素的个数
 
    if len(freq) == 2: #这里判断窗口内是否有两种元素,因为三带一只有两种不同元素
        values = list(freq.values()) #确认两种元素之后,获取这两种元素个数,转化为列表
        if sorted(values) == [1, 3]: #这里判断元素是否为三带一形式
            count += 1
            i += 4 #如果是三带一形式,则直接调到下一个窗口
            continue
    i += 1 #如果不是三带一形式,窗口往前滑动一个单位
 
print(count)

作者:仙鹤要吃鱼
链接:https://www.nowcoder.com/discuss/828937736277995520?sourceSSR=users
来源:牛客网

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务