LeetCode笔记:Biweekly Contest 96
Posted Espresso Macchiato
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode笔记:Biweekly Contest 96相关的知识,希望对你有一定的参考价值。
1. 题目一
给出题目一的试题链接如下:
1. 解题思路
这一题我偷了个懒,本来的话两个有序数列应该是考察的滑动指针,但是我算是取巧了吧,直接将一个数组换成了hash表,就可以快速查值了……
2. 代码实现
给出python代码实现如下:
class Solution:
def getCommon(self, nums1: List[int], nums2: List[int]) -> int:
nums1 = set(nums1)
for x in nums2:
if x in nums1:
return x
return -1
提交代码评测得到:耗时617ms,占用内存36.6MB。
2. 题目二
给出题目二的试题链接如下:
1. 解题思路
这一题其实只要将两个数组进行对位比较即可,然后看一下正负所需的值是否相同。
另外需要注意的是,由于最小变化量是k,因此如果有两个对位的数字对k不同余,那么直接就必然不可变成相同数组。
2. 代码实现
给出python代码实现如下:
class Solution:
def minOperations(self, nums1: List[int], nums2: List[int], k: int) -> int:
if k == 0:
return 0 if all(x == y for x, y in zip(nums1, nums2)) else -1
res, cnt = 0, 0
for x, y in zip(nums1, nums2):
if abs(x-y) % k != 0:
return -1
d = (y-x) // k
cnt += d
if d >= 0:
res += d
return res if cnt == 0 else -1
提交代码评测得到:耗时937ms,占用内存31.2MB。
3. 题目三
给出题目三的试题链接如下:
1. 解题思路
这一题我的思路其实有点笨重,就是首先按照nums2进行倒序排序,然后考察每一个值作为最小值时取满足条件的最大的k个nums1中的数,然后计算出score,最后取出这些score当中的最大值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def maxScore(self, nums1: List[int], nums2: List[int], k: int) -> int:
nums = [(x, y) for x, y in zip(nums1, nums2) if y != 0]
nums = sorted(nums, key=lambda x: (x[1], x[0]), reverse=True)
res, selected, s = 0, [], 0
for x, y in nums:
bisect.insort(selected, x)
s += x
if len(selected) > k:
s -= selected.pop(0)
if len(selected) == k:
res = max(res, s * y)
return res
提交代码评测得到:耗时3138ms,占用内存39MB。
4. 题目四
给出题目四的试题链接如下:
1. 解题思路
这一题坦率地说没想到什么好的思路,结果是看了答案搞定的,然后发现答案极其简单,简单到让我懵逼的地步,其实就是考察题中给出的四个操作,这四个操作都无法减小给出的两个目标值的最大公约数,因此,只需要对两个数全部除2直至变为奇数之后看一下两个数的最大公约数是否是1即可。
不过坦率地说,这里的必要性我能够理解,不过充分性我还没想清楚,不过大佬们就是这么干的,而且确实简单,就先把答案写上了,后面还得再想想这里的充分性的证明。
2. 代码实现
给出python代码实现如下:
class Solution:
def isReachable(self, targetX: int, targetY: int) -> bool:
while targetX % 2 == 0:
targetX = targetX // 2
while targetY % 2 == 0:
targetY = targetY // 2
_gcd = gcd(targetX, targetY)
return _gcd == 1
提交代码评测得到:耗时42ms,占用内存13.9MB。
以上是关于LeetCode笔记:Biweekly Contest 96的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode笔记:Biweekly Contest 79
LeetCode笔记:Biweekly Contest 93
LeetCode笔记:Biweekly Contest 89
LeetCode笔记:Biweekly Contest 69