• LeetCode笔记:Biweekly Contest 56

    • 1. 题目一

      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路

1. 题目一

给出题目一的试题链接如下:

  • 1925. Count Square Sum Triples

1. 解题思路

这一题的思路很清晰,就是找三个数,然后看一下是否满足勾股定理。

最暴力的解法就是三重循环,这里我们是使用二重循环然后看一下其求和结果是否是范围内的数的平方。

2. 代码实现

给出python代码实现如下:

class Solution:def countTriples(self, n: int) -> int:res = 0for i in range(1, n+1):for j in range(1, n+1):s = i*i + j*jk = int(math.sqrt(s))if k > n:breakif k*k == s:res += 1return res

提交代码评测得到:耗时408ms,占用内存14.1MB。

2. 题目二

给出题目二的试题链接如下:

  • 1926. Nearest Exit from Entrance in Maze

1. 解题思路

这一题用一个广度遍历算法即可快速地给出答案。

我们用广度优先遍历的方式不断地延展可访问空间,直至到达边界。

2. 代码实现

给出python代码实现如下:

class Solution:def nearestExit(self, maze: List[List[str]], entrance: List[int]) -> int:n, m = len(maze), len(maze[0])seen = {tuple(entrance)}q = [[entrance[0], entrance[1], 0]]while q:x, y, s = q.pop(0)if s != 0 and (x == n-1 or y == m-1 or x == 0 or y == 0):return sif x-1 >= 0 and (x-1, y) not in seen and maze[x-1][y] == ".":q.append((x-1, y, s+1))seen.add((x-1, y))if x+1 < n and (x+1, y) not in seen and maze[x+1][y] == ".":q.append((x+1, y, s+1))seen.add((x+1, y))if y-1 >= 0 and (x, y-1) not in seen and maze[x][y-1] == ".":q.append((x, y-1, s+1))seen.add((x, y-1))if y+1 < m and (x, y+1) not in seen and maze[x][y+1] == ".":q.append((x, y+1, s+1))seen.add((x, y+1))return -1

提交代码评测得到:耗时968ms,占用内存15.9MB。

3. 题目三

给出题目三的试题链接如下:

  • 1927. Sum Game

1. 解题思路

这一题事实上就是一个分类讨论的题目,我们总可以将游戏分为如下几种情况:

  1. 左右侧原始的数值之和相同,那么Alice的目的就是令左侧总和不等于右侧总和,此时只要问号数左右侧不平衡,那么Alice就是必胜的;
  2. 左侧原始数值之和大于右侧,此时Bob要赢,他就必须要尽可能地令右侧的问号取的数大于左侧问号取的数,且差值恰好为原始的差值;
  3. 左侧原始数值之和小于右侧,此时Bob要赢,他就必须要尽可能地令右侧的问号取的数小于左侧问号取的数,且差值恰好为原始的差值;

无论如何,显而易见的就是我们只需要考虑左右侧原始的数据之和的差值以及问号数目的差值即可,因为Alice和Bob对于左右侧数值之和的需求总是相悖的,因此最优策略下如果两侧各有一个元素,那么必然他们的取值是相同的。

那么,我们就可以进一步进行分类讨论,当左侧原始数值之和大于右侧时,又可以分为以下几种情况:

  1. 左右侧问号数相同,此时Alice必胜;
  2. 左侧问号比较多,此时Alice同样必胜;
  3. 右侧问号数比较多,此时当且仅当问号数为偶数(此时Bob处于后操作位),且差值之和恰好满足n=9×k2n = 9 \times \frac{k}{2}n=9×2k​时,Bob才可以赢。

同样,我们可以得到左侧原始数值之和小于右侧时的情况。

最终,我们将其转换为代码即可。

2. 代码实现

给出python代码实现如下:

class Solution:def sumGame(self, num: str) -> bool:delta_num = 0delta_mark = 0n = len(num) // 2for i in range(n):if num[i] == "?":delta_mark += 1else:delta_num += int(num[i])if num[n+i] == "?":delta_mark -= 1else:delta_num -= int(num[n+i])def f(n, k):if k == 0:return n != 0elif n == 0:return k > 0 or k < -1elif n * k > 0:return Truen, k = abs(n), abs(k)return k % 2 == 1 or n != 9 * (k //2)return f(delta_num, delta_mark)

提交代码评测得到:耗时212ms,占用内存15.3MB。

4. 题目四

给出题目四的试题链接如下:

  • 1928. Minimum Cost to Reach Destination in Time

1. 解题思路

放弃了,参考官方解答吧……

官方解答:规定时间内到达终点的最小花费

LeetCode笔记:Biweekly Contest 56(补发)相关推荐

  1. 【LeetCode】Biweekly Contest 10 总结

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

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

    LeetCode笔记:Biweekly Contest 55 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 68

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

  6. LeetCode笔记:Biweekly Contest 65

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

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

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

  8. LeetCode笔记:Biweekly Contest 94

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

  9. LeetCode笔记:Biweekly Contest 88

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

最新文章

  1. 原创推荐!B站最强学习资源汇总(数据科学,机器学习,Python)
  2. 如何禁止用户连续点击一个按钮事件详细JS
  3. python外星人入侵游戏图片_跪求一个问题@关于外星人入侵游戏(《python编程基础从入门到实...
  4. 机器学习与数据挖掘——第二章 数据与数据预处理
  5. java中的线程不安全和实例解析
  6. c++ 获取文件夹创建时间_手把手教学免费创建个人网站
  7. 苹果cms v8模板 高仿爱奇艺带PC+手机模板
  8. svn不知道这样的主机 怎么解决_玫瑰人生护肤品怎么样?你不知道的重要的事居然是这样的.........
  9. 电大 计算机网络 网考,2018-2019年最新电大《计算机网络(本)》网络核心课形考网考作业答案.docx...
  10. 复旦大学邱锡鹏老师深度学习课程笔记(一)—— 一些模型概述
  11. Text Scanner for Mac(超快速ocr文字识别软件)
  12. 开源java数据库库
  13. CRISPR技术有效的防止脱靶现象方法
  14. 怎样和控制欲很强的家人相处-不受他人影响
  15. nhibernate mysql配置_(转)NHibernate各种数据库配置写法
  16. 扬帆致远跨境电商:跨境电商品牌如何锁定真实用户
  17. reverse和reversed函数的总结
  18. 集合有哪些 java_java集合有哪些
  19. ESP32 快速入门(九):自定义 ESP32 分区表 partitions.csv
  20. html图片苹果无法显示,苹果cms采集的图片不显示解决办法

热门文章

  1. 技术面试要做哪些准备?
  2. TP-LINK TL-WDN7200H ubuntu18.04驱动安装
  3. Javascript里EQ、NE、GT、LT、GE、LE含义
  4. 引流产品分几类?引流产品结构四类定位产品
  5. CCF-CSP-201409-5 拼图
  6. NR LDPC 03- Tanner
  7. mysql procedure 存储过程
  8. python操作xslx/xsl出现‘\xa0‘和读取时间变成float类型的处理办法
  9. Spring Boot Spring Cloud 区分 开发环境 测试环境 预发布环境(灰度环境) 正式环境
  10. LPC1768用官方库中用寄存器开启两个硬件PWM