学做点心的网站,租服务器空间,怎么判断一个网站做的好,网站有源码 怎么建设记录了初步解题思路 以及本地实现代码#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/20 53. 最大子数组和11/21 2216. 美化数组的最少删除数11/22 2304. 网格中的最小路径代价11/23 1410. HTML 实体解析器11/24 2824. 统计和小于目标的下标对数目11/25 14…记录了初步解题思路 以及本地实现代码并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/20 53. 最大子数组和11/21 2216. 美化数组的最少删除数11/22 2304. 网格中的最小路径代价11/23 1410. HTML 实体解析器11/24 2824. 统计和小于目标的下标对数目11/25 1457. 二叉树中的伪回文路径11/26 828. 统计子串中的唯一字符 11/20 53. 最大子数组和 遍历每一个数 如果当前和大于0则将其加上 否则从0开始 def maxSubArray(nums)::type nums: List[int]:rtype: intret max(nums)now 0 for i in range(len(nums)):if now nums[i]0:now nums[i]ret max(ret,now)else:now 0return ret 11/21 2216. 美化数组的最少删除数 对于某个偶数坐标i 如果nums[i]nums[i1] 此时需要处理 如果删除i1后的数据 不产生影响 如果删除i之前的数据 可能产生新的问题坐标需要处理 所以删除i最优 def minDeletion(nums)::type nums: List[int]:rtype: intn len(nums)ans 0loc Truefor i in range(n-1):if nums[i]nums[i1] and loc:ans1else:loc not locans (n-ans)%2return ans 11/22 2304. 网格中的最小路径代价 从最后一行往前考虑 dp[i][j] 表示在第i行j列的最小代价 dp[m-1] grid[m-1] def minPathCost(grid, moveCost)::type grid: List[List[int]]:type moveCost: List[List[int]]:rtype: intm,nlen(grid),len(grid[0])dp [[float(inf)]*n for _ in range(m)]dp[-1] grid[-1]for i in range(m-2,-1,-1):for j,g in enumerate(grid[i]):for k,c in enumerate(moveCost[g]):dp[i][j] min(dp[i][j],dp[i1][k]c)dp[i][j]greturn min(dp[0]) 11/23 1410. HTML 实体解析器 从头遍历 判断是否存在匹配的字符实体 def entityParser(text)::type text: str:rtype: strm {quot;: ,apos;: ,gt;: ,lt;: ,frasl;: /,amp;: ,}i 0n len(text)ans []while in:tag Falseif text[i]:for e in m:if text[i:ilen(e)]e:ans.append(m[e])ilen(e)tag Truebreakif not tag:ans.append(text[i])i1return .join(ans) 11/24 2824. 统计和小于目标的下标对数目 从小到大排序 双指针 确定小的位置l 大的位置r往左移动知道满足条件 def countPairs(nums, target)::type nums: List[int]:type target: int:rtype: intnums.sort()ans 0l,r0,len(nums)-1while lr:while lr and nums[l]nums[r]target:r-1ans r-ll1return ans 11/25 1457. 二叉树中的伪回文路径 如果是伪回文路径 那么其节点值中最多只能有一个值出现奇数次 其他都是偶数次 节点值为1到9 使用一个9位二进制tag来记录节点值出现次数的奇偶性 如果这个tag中存在小于1个的1那么满足条件 class TreeNode(object):def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right right
def pseudoPalindromicPaths (root)::type root: TreeNode:rtype: intdef dfs(tag,node):tag ^ 1node.valleft Truev 0if node.left:v dfs(tag,node.left)left Falseif node.right:v dfs(tag,node.right)left Falseif left:if tag0 or tag(tag-1)0:v1return vreturn dfs(0,root) 11/26 828. 统计子串中的唯一字符 对每一个位置的字符计算其贡献值 对于当前位置i的字符 找到相同字符的前一个位置a 和后一个位置b 这个位置的贡献值为(i-a)*(b-i) def uniqueLetterString(s)::type s: str:rtype: intfrom collections import defaultdictm defaultdict(list)for i,c in enumerate(s):m[c].append(i)ans 0for l in m.values():l [-1]l[len(s)]for i in range(1,len(l)-1):ans (l[i]-l[i-1])*(l[i1]-l[i])return ans