• LeetCode笔记:Biweekly Contest 75

    • 1. 题目一

      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
      • 3. 算法优化
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接: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相关推荐

  1. 【LeetCode】Biweekly Contest 10 总结

    一.概述 做的很差劲,至少可以拿出半小时看第四题的,结果只ac了第一题和第三题.所以对自己很生气,要总结一下经验教训. 二.分析 1.第一题 输入三个有序数组,找相同元素. 我是个傻逼,为什么这么说呢 ...

  2. LeetCode笔记:Biweekly Contest 56(补发)

    LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  3. LeetCode笔记:Biweekly Contest 38 比赛记录

    LeetCode笔记:Biweekly Contest 38 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...

  4. LeetCode笔记:Biweekly Contest 83

    LeetCode笔记:Biweekly Contest 83 0. 小结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. ...

  5. LeetCode笔记:Biweekly Contest 55(补发)

    LeetCode笔记:Biweekly Contest 55 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  6. LeetCode笔记:Biweekly Contest 68

    LeetCode笔记:Biweekly Contest 68 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  7. LeetCode笔记:Biweekly Contest 65

    LeetCode笔记:Biweekly Contest 65 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  8. LeetCode笔记:Biweekly Contest 33 比赛记录

    LeetCode笔记:Biweekly Contest 33 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...

  9. LeetCode笔记:Biweekly Contest 94

    LeetCode笔记:Biweekly Contest 94 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

最新文章

  1. 谈谈java的线程池(创建、机制)
  2. 创建型模式 工厂模式
  3. 11、jeecg 笔记之 界面常用整理 - 方便复制粘贴
  4. Nginx常用命令有哪些?
  5. Unity3d读取.csv文件
  6. centOS下mongodb的安装
  7. 《Cassandra权威指南》第二版书评及访谈
  8. mysql简易购物车系统_jsp+mysql实例简单的购物车
  9. x509证书,SSL详解
  10. 【史上最全】设计师必备的83个设计资源网站
  11. COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法
  12. Word控件Spire.Doc 转换教程(二十一):将非标准字体的word文档转换为PDF
  13. web面向接口_面向未来的响应式Web开发
  14. PostgreSQL 大会与DBA培训交流记录
  15. 三菱PLC编程与案例精讲之ST语言
  16. 电脑网页压力测试软件,网站压力测试工具
  17. 【技术管理】管理核心五要素 - 学习笔记
  18. XJTU第十三周大计基编程作业
  19. sql2005如何修改服务器名称,sql2005 服务器名称设置
  20. 改善技术简历的47条原则

热门文章

  1. java jasperException异常
  2. 【FPGA教程案例39】通信案例9——基于FPGA的交织-解交织数据传输
  3. 实验二 HDFS实验操作
  4. 利用zabbix api批量添加数百台监控主机
  5. 简谈 SDRAM的工作原理
  6. usb鼠标驱动(一)
  7. 长期失眠会有哪些影响?
  8. 爬取评分网站上面的商家信息
  9. 浅谈元数据管理之Atlas和Metacat
  10. PLSQL使用instantclient64位(无安装ORACLE!亲测)