LeetCode笔记:Weekly Contest 302
Posted Espresso Macchiato
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode笔记:Weekly Contest 302相关的知识,希望对你有一定的参考价值。
0. 序言
这一次的比赛整体上来说感觉算是比较简单的,第一名的大佬也就花了7分钟,实际我在做的时候也没有感受到啥思路上的瓶颈,基本上按部就班就把4道题都搞定了,整体上来说没啥感觉……
1. 题目一
给出题目一的试题链接如下:
1. 解题思路
这一题的答案,其实只需要考察最后能够留下来的数字就可以了。
而最后能够留下来的数字,有且仅有原数组当中个数为奇数的数字。
由此,我们就可以获得最终的答案了。
2. 代码实现
给出python代码实现如下:
class Solution:
def numberOfPairs(self, nums: List[int]) -> List[int]:
n = len(nums)
cnt = Counter(nums)
remain = len([x for x in cnt if cnt[x] % 2 == 1])
return [(n-remain)//2, remain]
提交代码评测得到:耗时76ms,占用内存13.8MB。
2. 题目二
给出题目二的试题链接如下:
1. 解题思路
这一题思路上也很直接,我们将所有的数字按照位数之和进行归类,然后对每一个含有2个或2个以上的数字的组别当中取得最大的两个数求和,然后取出最大值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def maximumSum(self, nums: List[int]) -> int:
def cal_digits(x):
res = 0
while x:
res += x % 10
x = x // 10
return res
cache = defaultdict(list)
for x in nums:
cache[cal_digits(x)].append(x)
res = -1
for k in cache:
if len(cache[k]) == 1:
continue
s = sorted(cache[k])
res = max(res, s[-1] + s[-2])
return res
提交代码评测得到:耗时1797ms,占用内存29.6MB。
3. 题目三
给出题目三的试题链接如下:
1. 解题思路
这一题,我们的思路来说就是对每一个截断的trim
预先的先得到对应的数组,然后排序完成,然后,我们就只需要对于每一个query找到对应的trim
下的数组,然后找到第k
小的元素即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def smallestTrimmedNumbers(self, nums: List[str], queries: List[List[int]]) -> List[int]:
n = len(nums[0])
mem =
for i in range(n+1):
s = [(x[-i:], idx) for idx, x in enumerate(nums)]
mem[i] = [x[1] for x in sorted(s)]
res = [mem[trim][k-1] for k, trim in queries]
return res
提交代码评测得到:耗时958ms,占用内存14.2MB。
4. 题目四
给出题目四的试题链接如下:
1. 解题思路
这一题的思路也是很简单,我们只需要先找出来numsDivide
数组当中的最大公约数s
,然后,只需要找出nums
当中最小的一个s
的约数即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minOperations(self, nums: List[int], numsDivide: List[int]) -> int:
nums = sorted(nums)
if nums[0] == 1:
return 0
s = numsDivide[0]
for x in numsDivide[1:]:
s = math.gcd(s, x)
if s == 1:
break
for idx, x in enumerate(nums):
if x > s:
return -1
elif s % x == 0:
return idx
return -1
提交代码评测得到:耗时1717ms,占用内存29.6MB。
以上是关于LeetCode笔记:Weekly Contest 302的主要内容,如果未能解决你的问题,请参考以下文章