LeetCode笔记:Biweekly Contest 69
- LeetCode笔记:Biweekly Contest 69
- 1. 题目一
- 1. 解题思路
- 2. 代码实现
- 2. 题目二
- 1. 解题思路
- 2. 代码实现
- 3. 题目三
- 1. 解题思路
- 2. 代码实现
- 4. 题目四
- 1. 解题思路
- 2. 代码实现
- 1. 题目一
1. 题目一
给出题目一的试题链接如下:
- 2129. Capitalize the Title
1. 解题思路
这题没啥,就是按照题意分词之后再对每一个单词进行格式转换即可。
2. 代码实现
给出python代码实现如下:
class Solution:def capitalizeTitle(self, title: str) -> str:words = title.split()for i, w in enumerate(words):if len(w) <= 2:words[i] = w.lower()else:words[i] = w[0].upper() + w[1:].lower()return " ".join(words)
提交代码评测得到:耗时33ms,占用内存14.1MB。
2. 题目二
给出题目二的试题链接如下:
- 2130. Maximum Twin Sum of a Linked List
1. 解题思路
这一题我的思路挺暴力的,就是先用一个list重新记下所有的val,然后就可以快速地找到所有的pair了,就可以找最大值了。
2. 代码实现
给出python代码实现如下:
class Solution:def pairSum(self, head: Optional[ListNode]) -> int:vals = []while head:vals.append(head.val)head = head.nextn = len(vals)return max(vals[i] + vals[n-1-i] for i in range(n//2))
提交代码评测得到:耗时1161ms,占用内存55MB。
3. 题目三
给出题目三的试题链接如下:
- 2131. Longest Palindrome by Concatenating Two Letter Words
1. 解题思路
这一题其实也简单,就是先用一个counter统计一下所有的字符。
我们要构成一个回文,那么所需要的就是相反的字符串,因此我们只要找到所有的相反的字符串的组合,然后统计其能够构成的pair的数目即可。
唯一需要注意的是,对于aa
类型的字符串,我们需要单独考察一下,因为对于这类字符,他的相反字符串就是它本身,因此可以构成的pair是其总数的1/2。
更特别的,由于aa
类字符串可以放在中心位置独自构成pair,因此,如果存在奇数的aa
类型字符,那么结果还要额外再加上2。
2. 代码实现
给出python代码实现如下:
class Solution:def longestPalindrome(self, words: List[str]) -> int:cnt = Counter(words)res = 0mid = Falsefor w in cnt.keys():if w == w[::-1]:k = cnt[w]res += 4*(k//2)if k % 2 == 1:mid = Trueelse:k = min(cnt[w], cnt[w[::-1]])res += 4 * kcnt[w] -= kif w[::-1] in cnt.keys():cnt[w[::-1]] -= kreturn res+2 if mid else res
提交代码评测得到:耗时1384ms,占用内存38.5MB。
4. 题目四
给出题目四的试题链接如下:
- 2132. Stamping the Grid
1. 解题思路
这一题我的思路事实上还是比较直接的,就是首先遍历一遍所有的节点,找到所有的可以贴上邮票的位置做一个标记;然后重新遍历每一个位置,考察是不是所有的节点都能够被至少一张邮票覆盖住。
但是,这里的难点就是在于说如何在 O ( 1 ) O(1) O(1)的时间复杂度之内确认某个位置能否贴上邮票以及某个位置是否能够被某一张邮票覆盖。
不过所幸这两者实现的方法都是统一的,就是考察一个矩形范围内元素的总和,这个通过一个累积数组就可以快速实现。
2. 代码实现
给出python代码实现如下:
class Solution:def possibleToStamp(self, grid: List[List[int]], stampHeight: int, stampWidth: int) -> bool:n, m = len(grid), len(grid[0])cumsum = [[0 for _ in range(m+1)] for _ in range(n+1)]for i in range(n):for j in range(m):cumsum[i+1][j+1] = grid[i][j] + cumsum[i+1][j] + cumsum[i][j+1] - cumsum[i][j]status = [[0 for _ in range(m)] for _ in range(n)]for i in range(n-stampHeight+1):for j in range(m-stampWidth+1):if cumsum[i+stampHeight][j+stampWidth] + cumsum[i][j] - cumsum[i+stampHeight][j] - cumsum[i][j+stampWidth] != 0:continuestatus[i][j] = 1for i in range(n-1):status[i+1][0] += status[i][0]for j in range(m-1):status[0][j+1] += status[0][j]for i in range(n-1):for j in range(m-1):status[i+1][j+1] += status[i+1][j] + status[i][j+1] - status[i][j]def is_cover(i, j):if i < stampHeight and j < stampWidth:return status[i][j]elif i < stampHeight:return status[i][j] - status[i][j-stampWidth]elif j < stampWidth:return status[i][j] - status[i-stampHeight][j]else:return status[i][j] - status[i][j-stampWidth] - status[i-stampHeight][j] + status[i-stampHeight][j-stampWidth]return all(is_cover(i, j) + grid[i][j] > 0 for i in range(n) for j in range(m))
提交代码评测得到:耗时4392ms,占用内存55.8MB。
LeetCode笔记:Biweekly Contest 69相关推荐
- 【LeetCode】Biweekly Contest 10 总结
一.概述 做的很差劲,至少可以拿出半小时看第四题的,结果只ac了第一题和第三题.所以对自己很生气,要总结一下经验教训. 二.分析 1.第一题 输入三个有序数组,找相同元素. 我是个傻逼,为什么这么说呢 ...
- LeetCode笔记:Biweekly Contest 56(补发)
LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 38 比赛记录
LeetCode笔记:Biweekly Contest 38 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...
- LeetCode笔记:Biweekly Contest 83
LeetCode笔记:Biweekly Contest 83 0. 小结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. ...
- LeetCode笔记:Biweekly Contest 55(补发)
LeetCode笔记:Biweekly Contest 55 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 68
LeetCode笔记:Biweekly Contest 68 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 65
LeetCode笔记:Biweekly Contest 65 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 33 比赛记录
LeetCode笔记:Biweekly Contest 33 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...
- LeetCode笔记:Biweekly Contest 94
LeetCode笔记:Biweekly Contest 94 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
最新文章
- IBatis.net介绍
- 2019/01/29-Linux常用指令
- 微信 wx.chooseImage 上传图片 的思考
- mac golang无法启动_Mac无法开机?如何修复并使其重新启动
- hp android 平板,惠普三款Android平板电脑新产品曝光
- 计算机丢失d3dx935.dll,d3dx943.dll丢失的解决方法
- snyk 项目漏洞检测
- 谷歌浏览器提示应用程序无法启动
- 计算机 网络 硬件包括,局域网网络硬件主要包括5个
- 哈尔滨车牌摇号系统遭遇黑客攻击瘫痪
- ubuntu18.04系统外接显卡(英伟达RTX 2080 Ti)驱动安装
- 【源码】用主应力线(应力可视化)研究二维应力场
- 一键生成mybatis
- 自己写的C盘清理工具 Ver1.0.0
- MyBatis主子表查询
- 压缩包文件如何删除解压密码
- 远程桌面未找到远程计算机服务,电脑无法远程连接怎么办
- TIBCO Spotfire: JavaScript可视化框架 - JSViz
- java后端上传文件校验文件后缀
- SpringBoot使用LUA解决Redis库存遗留问题