第七课
204. 计数质数
语法:while else,continue break 埃氏筛 数的倍数不是素数。
class Solution:def countPrimes(self, n: int) -> int:res = 0for i in range(2, n):for j in range(2, i):if i % j == 0:breakelse:res += 1return res
优化
class Solution:def countPrimes(self, n: int) -> int:num_list = [1] * nres = 0for i in range(2, n):if not num_list[i]: continueres += 1for j in range(2 * i, n, i):num_list[j] = 0return res
263. 丑数
class Solution:def isUgly(self, n: int) -> bool:if n <= 0: return Falsefactors = [2, 3, 5]for fac in factors:while n % fac == 0:n //= facreturn n == 1
第八课
412. Fizz Buzz
python">class Solution:def fizzBuzz(self, n: int) -> List[str]:res = [''] * 列表包含 n # n 个 空串# res = []for i in range(1, n + 1):if i % 15 == 0: x = "FizzBuzz" # 先处理 15 的倍数elif i % 3 == 0: x = "Fizz"elif i % 5 == 0: x = "Buzz"else: x = str(i) # 转换成字符串res[i - 1] = x# res.append(x)return res# return ['Fizz'[i%3*4:]+"Buzz"[i%5*4:] or str(i) for i in range(1, n+1)]
2239. 找到最接近 0 的数字
python">class Solution:def findClosestNumber(self, nums: List[int]) -> int:ans = inffor x in nums:if abs(x) == abs(ans): ans = max(x, ans)elif abs(x) < abs(ans): ans = x return ans
3289. 数字小镇中的捣蛋鬼
标记法
python">class Solution:def getSneakyNumbers(self, nums: List[int]) -> List[int]:res = [0, 0]n = len(nums)i = 0for x in nums:x %= nif nums[x] >= n:res[i] = xi += 1if i == 2: breaknums[x] += nreturn res
2432… 处理用时最长的那个任务的员工
python">class Solution:def hardestWorker(self, n: int, logs: List[List[int]]) -> int:ans = pre = most = 0for i, t in logs: dif = t - prepre = tif most < dif or most == dif and ans > i:ans = imost = difreturn ans