# 412
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
res = []
for i in range(1 , n + 1):
if i % 3 == 0 and i % 5 != 0:
res.append('Fizz')
elif i % 3 != 0 and i % 5 == 0:
res.append('Buzz')
elif i % 3 == 0 and i % 5 == 0:
res.append('FizzBuzz')
else:
res.append(str(i))
return res
# 413
class Solution:
def numberOfArithmeticSlices(self, A: List[int]) -> int:
if len(A) < 3:
return 0
l , r = 0 , 2
res = 0
while r < len(A):
if A[r] - A[r - 1] == A[r - 1] - A[r - 2]:
res += r - l - 1
r += 1
else:
l = r - 1
r = r + 1
return res
# 414
class Solution:
def thirdMax(self, nums: List[int]) -> int:
nums = sorted(set(nums))
if len(nums) < 3: return nums[-1]
return nums[-3]
# 415
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
n1 , n2 = 0 , 0
for i in num1:
n1 = n1 * 10 + int(i)
for i in num2:
n2 = n2 * 10 + int(i)
return str(n1 + n2)
# 416
class Solution:
def canPartition(self, nums: List[int]) -> bool:
avg, mod = divmod(sum(nums), 2)
if mod != 0: return False
n = len(nums)
dp = [[1] + [0] * avg for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, avg + 1):
if j - nums[i - 1] >= 0:
dp[i][j] = dp[i - 1][j - nums[i - 1]] | dp[i - 1][j]
return dp[-1][-1] == 1