给出题目一的试题链接如下:
这一题其实可以有更优雅的解决方法的,毕竟答案必然是质数的平方数。
不过鉴于这就是一道easy的题目,我们就直接按照暴力求解的方法进行解答了。
给出python代码实线如下:
class Solution:
def isThree(self, n: int) -> bool:
return len([x for x in range(1, n+1) if n % x == 0]) == 3
提交代码评测得到:耗时36ms,占用内存14.3MB。
给出题目二的试题链接如下:
由于题目要求邻位必须不同,因此,事实上只有一种情况会导致必然存在邻位相同的情况,即存在单个数字的个数超过总数的一半以上,此时,无论怎样排列总会出现两个相邻的情况,否则的话,我们只需要不断地选择最多的一个数据然后进行插入就总能够成功构建目标序列。
因此,我们只需要对最多的一个数据进行统计即可得到最后的答案。
给出python代码实现如下:
class Solution:
def numberOfWeeks(self, milestones: List[int]) -> int:
s = sum(milestones)
m = max(milestones)
return min(s, 2*(s-m)+1)
提交代码评测得到:耗时720ms,占用内存25.7MB。
给出题目三的试题链接如下:
给出python代码实现如下:
class Solution:
def minimumPerimeter(self, neededApples: int) -> int:
i, j = 0, 10**5
while i < j-1:
x = (i+j)//2
s = 4*x**3+6*x**2+2*x
if s >= neededApples:
j = x
else:
i = x
return j*8
提交代码评测得到:耗时36ms,占用内存14.3MB。
给出题目四的试题链接如下:
给出python代码实现如下:
class Solution:
def countSpecialSubsequences(self, nums: List[int]) -> int:
MOD = 10**9+7
n = len(nums)
a, b, c = 0, 0, 0
for i in nums[::-1]:
if i == 2:
c = (2 * c + 1)%MOD
elif i == 1:
b = (2 * b + c) % MOD
else:
a = (2 * a + b) % MOD
return a
提交代码评测得到:耗时1888ms,占用内存18MB。