
这里是式酱(∠・ω< )⌒☆
今天的题目总体来说有点简单,思路都挺容易想到的,T3因为不怎么会算交换次数卡了很久,T4则是一个老题翻新,把代码copy一下改一改就通过了。
以后如果继续有AK的场的话会更新自己的题解
class Solution:
def convertTemperature(self, celsius: float) -> List[float]:
return [celsius + 273.15,celsius*1.8 + 32]暴力即可,或许可以适当地剪个枝?效果还挺好的。
class Solution:
def subarrayLCM(self, nums: List[int], k: int) -> int:
from math import lcm
n = len(nums)
res = 0
for i in range(n):
count = 1
for j in range(i,n):
count = lcm(count,nums[j])
if count == k:
res += 1
elif count > k:
break
return res层序遍历,获得当前层数节点值的数组,与排序后的数组逐一比对交换。
class Solution:
def minimumOperations(self, root: Optional[TreeNode]) -> int:
from collections import deque
q = deque([root])
res = 0
while q:
nums = []
# index 用来存放每个元素的下标
index = dict()
for i in range(len(q)):
T = q.popleft()
nums.append(T.val)
index[T.val] = i
if T.left:
q.append(T.left)
if T.right:
q.append(T.right)
t = nums[:]
t.sort()
for i in range(len(nums)):
if t[i] == nums[i]:
continue
else:
res += 1
j = index[t[i]]
nums[i],nums[j] = nums[j],nums[i]
# 已修改nums的下标 index需要接着做改动
index[nums[j]] = j
index[nums[i]] = i
return res子题目:求最大回文子串。
利用贪心的思想,在dp中一旦找到一个段落内最大回文子串长度大于等于k,立马做一个截断,很明显这种策略是最优的。
贪心的思想与前几周的题目一模一样 2444. 统计定界子数组的数目
class Solution:
def maxPalindromes(self, s: str, k: int) -> int:
n = len(s)
dp = [[0]*n for _ in range(n)]
res = 0
# pre用于记录当前这个段的结尾
pre = n
for i in range(n-1,-1,-1):
max_count = 0
# 注意划分一个上界
for j in range(i,pre):
if s[i] == s[j]:
if j - i <= 1:
dp[i][j] = j - i + 1
elif dp[i+1][j-1]:
dp[i][j] = dp[i+1][j-1] + 2
max_count = max(max_count,dp[i][j])
if max_count >= k:
res += 1
pre = i
return res