LeetCode笔记:Biweekly Contest 75
- LeetCode笔记:Biweekly Contest 75
- 1. 题目一
- 1. 解题思路
- 2. 代码实现
- 2. 题目二
- 1. 解题思路
- 2. 代码实现
- 3. 题目三
- 1. 解题思路
- 2. 代码实现
- 3. 算法优化
- 4. 题目四
- 1. 解题思路
- 2. 代码实现
- 1. 题目一
- 比赛链接:https://leetcode.com/contest/biweekly-contest-75
1. 题目一
给出题目一的试题链接如下:
- 2220. Minimum Bit Flips to Convert Number
1. 解题思路
这一题思路倒是简单,逐位进行二进制比特比较就行了。
2. 代码实现
给出python代码实现如下:
class Solution:def minBitFlips(self, start: int, goal: int) -> int:res = 0while start != 0 or goal != 0:res = res if start % 2 == goal % 2 else res + 1start = start // 2goal = goal // 2return res
提交代码评测得到:耗时56ms,占用内存14MB。
2. 题目二
给出题目二的试题链接如下:
- 2221. Find Triangular Sum of an Array
1. 解题思路
这一题应该是有比较巧妙的方法的,不过这里我们的思路十分的暴力,直接一个二重循环搞定了……
2. 代码实现
给出python代码实现如下:
class Solution:def triangularSum(self, nums: List[int]) -> int:n = len(nums)for i in range(n-1, 0, -1):for j in range(i):nums[j] = (nums[j] + nums[j+1]) % 10return nums[0]
提交代码评测得到:耗时3334ms,占用内存13.7MB。
3. 题目三
给出题目三的试题链接如下:
- 2222. Number of Ways to Select Buildings
1. 解题思路
这一题我们的思路还是比较直接的,就是考察每一个0之后的10序列个数以及每一个1之后的01序列个数。
但是,我们对于其计数的实现却是多少有点繁琐的,用了两个累积数组进行求解。
2. 代码实现
给出python代码实现如下:
class Solution:def numberOfWays(self, s: str) -> int:n = len(s)post0 = [0 for _ in range(n)]post1 = [0 for _ in range(n)]for i in range(n-2, -1, -1):if s[i+1] == "0":post0[i] = post0[i+1] + 1post1[i] = post1[i+1]else:post0[i] = post0[i+1]post1[i] = post1[i+1] + 1post01 = [0 for _ in range(n)]post10 = [0 for _ in range(n)]for i in range(n-3, -1, -1):if s[i+1] == "0":post01[i] = post01[i+1] + post1[i+1]post10[i] = post10[i+1]else:post01[i] = post01[i+1]post10[i] = post10[i+1] + post0[i+1]res = 0for i in range(n-2):if s[i] == "0":res += post10[i]else:res += post01[i]return res
提交代码评测得到:耗时2938ms,占用内存24.6MB。
3. 算法优化
这一题看了一下别人的解法,发现思路基本还是一样,但是求解的方式变成了计算前后0或者1的乘积,这样的话同样都可以统计010或者101的序列,但是实现上明显更加优雅了。
给出别人的code如下:
class Solution:def numberOfWays(self, s: str) -> int:count1=0for i in s:if i=="1":count1+=1count0=len(s)-count1n0,n1=0,0ans=0for i in s:if i=="1":ans+=n0*count0n1+=1count1-=1else:ans+=n1*count1n0+=1count0-=1return ans
4. 题目四
给出题目四的试题链接如下:
- 2223. Sum of Scores of Built Strings
1. 解题思路
这一题我自己没有搞定,不过看别人的乘积发现基本都是只用了一两分钟就搞定了,简直惊呆了我。
后来才知道,原来这个是有标准算法的,就是一个字符串匹配的z algorithm,因此这里我们就不对其进行具体的解释了,具体可以看我另外整理的z algorithm的介绍(经典算法:Z算法(z algorithm))。
2. 代码实现
给出python代码实现如下:
class Solution:def sumScores(self, s: str) -> int:def z_algorithm(s):n = len(s)z = [0 for _ in range(n)]l, r = -1, -1for i in range(1, n):if i > r:l, r = i, iwhile r < n and s[r-l] == s[r]:r += 1z[i] = r-lr -= 1else:k = i - lif z[k] < r - i + 1:z[i] = z[k]else:l = iwhile r < n and s[r-l] == s[r]:r += 1z[i] = r-lr -= 1z[0] = nreturn zz = z_algorithm(s)return sum(z)
提交代码评测得到:耗时553ms,占用内存18.9MB。
LeetCode笔记:Biweekly Contest 75相关推荐
- 【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. 代码实现 ...
最新文章
- 谈谈java的线程池(创建、机制)
- 创建型模式 工厂模式
- 11、jeecg 笔记之 界面常用整理 - 方便复制粘贴
- Nginx常用命令有哪些?
- Unity3d读取.csv文件
- centOS下mongodb的安装
- 《Cassandra权威指南》第二版书评及访谈
- mysql简易购物车系统_jsp+mysql实例简单的购物车
- x509证书,SSL详解
- 【史上最全】设计师必备的83个设计资源网站
- COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法
- Word控件Spire.Doc 转换教程(二十一):将非标准字体的word文档转换为PDF
- web面向接口_面向未来的响应式Web开发
- PostgreSQL 大会与DBA培训交流记录
- 三菱PLC编程与案例精讲之ST语言
- 电脑网页压力测试软件,网站压力测试工具
- 【技术管理】管理核心五要素 - 学习笔记
- XJTU第十三周大计基编程作业
- sql2005如何修改服务器名称,sql2005 服务器名称设置
- 改善技术简历的47条原则