0


【算法】力扣第 277 场周赛

文章目录

上周的周赛,还是挺简单的

2148. 元素计数

只需要保证【最小】<x<【最大】就可以了
考虑到数据量

1 <= nums.length <= 100

,可以直接写成一行,否则需要存一下min和max

classSolution:defcountElements(self, nums: List[int])->int:returnsum(min(nums)< x <max(nums)for x in nums)

2149. 按符号重排数组

筛选+拼接,可以学习下chain和zip的用法

classSolution:defrearrangeArray(self, nums: List[int])-> List[int]:return[*chain(*zip((x for x in nums if x >0),(x for x in nums if x <0)))]

2150. 找出数组中的所有孤独数字

Counter直接就过了

classSolution:deffindLonely(self, nums: List[int])-> List[int]:
        cnt = Counter(nums)return[i for i in cnt.keys()ifnot cnt[i+1]andnot cnt[i-1]and cnt[i]==1]

2151. 基于陈述统计最多好人数

二进制枚举,2行解法

classSolution:defmaximumGood(self, statements: List[List[int]])->int:
        cnt=lambda i:0ifany((i >> j)&1and st <2and st !=(i >> k)&1for j, row inenumerate(statements)for k, st inenumerate(row))elsebin(i).count('1')returnmax(cnt(i)for i inrange(1,1<<len(statements)))

偶然看到的一个大神的真·一行解法👇,太神奇了,大家可以学习下

classSolution:maximumGood=lambda _, S:max(sum(C)for C in product(range(2), repeat=len(S))ifall(C[i]==0or2==S[i][j]or S[i][j]==C[j]for i,j in product(range(len(S)), repeat=2)))

总结

这次的周赛极限解法是【一行】+【一行】+【二行】+【一行】,五行搞定
在题目不难的情况下,优雅地AK将是每一个pythoner永恒的追求


本文转载自: https://blog.csdn.net/weixin_45825073/article/details/122751898
版权归原作者 可可卷 所有, 如有侵权,请联系我们删除。

“【算法】力扣第 277 场周赛”的评论:

还没有评论