LeetCode第277场周赛
文章目录
第一题:
元素计数
本题重点在排序,排序后计算中间值的个数即就是答案的结果。本题就是一个签到题,大家应该也都是直接拿捏的吧!
代码:
classSolution:defcountElements(self, nums: List[int])->int:
nums.sort()sum=0for index,i inenumerate(nums):if index ==0or index ==len(nums)-1:continueif i > nums[0]and i < nums[-1]:sum+=1returnsum
第二题:
按符号重排数组
本题个人认为它的难度不是一个
mid
难度,应该是要给
easy
难度,可能本场周赛比较简单,所以就算一个
mid
吧。
过于简单我就不讲思路了,大家直接看代码即可!
代码:
classSolution:defrearrangeArray(self, nums: List[int])-> List[int]:
n1 =[]
n2 =[]
n =[]for i in nums:if i>0:
n1.append(i)else:
n2.append(i)for j inrange(len(n1)):
n.append(n1[j])
n.append(n2[j])
nums[:]= n
return nums
第三题:
找出数组中的所有孤独数字
本题首先需要先排序,然后进行遍历判断即可。
代码:
classSolution:deffindLonely(self, nums: List[int])-> List[int]:iflen(nums)==1:return nums
nums.sort()
lone =[]
dit ={}for i inset(nums):
dit[i]=0for i in nums:
dit[i]+=1for i inrange(len(nums)):if i ==0and dit[nums[i]]==1and nums[i+1]-1!= nums[i]:
lone.append(nums[i])elif i ==len(nums)-1and dit[nums[i]]==1and nums[i-1]+1!= nums[i]:
lone.append(nums[i])elif i !=0and i !=len(nums)-1and nums[i-1]+1!= nums[i]and nums[i+1]-1!= nums[i]and dit[nums[i]]==1:
lone.append(nums[i])return lone
第四题:
基于陈述统计最多好人数
本题也是本场周赛的压轴题,是一个小学思维题,但是我也是被它给拿下哈哈哈,赛后我又看了y总和题解区大佬们的解答我才大概知道怎么去写,才有点思路。本题因为他的范围计算量在力扣要求的范围内,所以它可以直接使用暴力枚举法。本题的最大复杂度是
2的n次方乘n的方
,而暴力枚举的复杂度则是
2的n次方乘n
。所以暴力枚举法成立!
参考一个大佬的思路:
代码:
classSolution:defmaximumGood(self, statements: List[List[int]])->int:
n =len(statements)
res =0for i inrange(2**n):
falg =True
c =0for j inrange(n):if(i>>j)&1:
c +=1for k inrange(n):if statements[j][k]!=2and statements[j][k]!=((i>>k)&1):
falg =Falsebreakif falg ==True:
res =max(res,c)return res
总结:
本次周赛也是我的第二次周赛,因为这次周赛得前三题比较简单,所以我们全部ac,上一次周赛ac出前两道题,也希望能和大家一起进步,祝大家在新的一年ac之路一路长虹!!!加油加油,同时也希望本篇文章对你有所帮助!!!
版权归原作者 铁甲小宝同学 所有, 如有侵权,请联系我们删除。