LeetCode笔记:Weekly Contest 317

Posted Espresso Macchiato

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode笔记:Weekly Contest 317相关的知识,希望对你有一定的参考价值。

1. 题目一

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

1. 解题思路

这一题其实就是找出数组当中所有6的倍数,然后对他们求平均即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def averageValue(self, nums: List[int]) -> int:
        s, n = 0, 0
        for i in nums:
            if i % 6 == 0:
                s += i
                n += 1
        return s // n if n != 0 else 0

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

2. 题目二

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

1. 解题思路

这一题同样比较直接,将每一个用户的总视频观看次数和其最小字典序的最大观看视频存储下来然后返回出最大值即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def mostPopularCreator(self, creators: List[str], ids: List[str], views: List[int]) -> List[List[str]]:
        popularity = defaultdict(int)
        videos = 
        for p, idx, v in zip(creators, ids, views):
            popularity[p] += v
            if p in videos:
                if v > videos[p][1]:
                    videos[p] = (idx, v)
                elif v == videos[p][1] and idx < videos[p][0]:
                    videos[p] = (idx, v)
            else:
                videos[p] = (idx, v)
        _max = max(popularity.values())
        res = []
        for p, v in popularity.items():
            if v == _max:
                res.append([p, videos[p][0]])
        return res

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

3. 题目三

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

1. 解题思路

这一题就是从最后一位开始,不断向上凑整到0,直到所有位的总和不大于target,然后看一下一共加了多少即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def makeIntegerBeautiful(self, n: int, target: int) -> int:
        digits = []
        while n != 0:
            digits.insert(0, n % 10)
            n = n // 10
        res = 0
        flag = 1
        while sum(digits) > target:
            d = digits.pop()
            if d != 0:
                res += (10 - d) * flag
                r, i = 1, len(digits)-1
                while r != 0 and i >= 0:
                    nr = (digits[i] + r) // 10
                    digits[i] = (digits[i] + r) % 10
                    r = nr
                    i -= 1
                if r != 0:
                    digits.insert(0, r)
            flag *= 10
        return res

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

4. 题目四

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

这一题感觉其实可以做的,不过实在是扛不住了,回北京,晚上的车次被取消了,被迫带着口罩10个小时的火车,现在人基本就是个活死人状态,实在是搞不动了……

而且最坑的是,我从一个几乎没有任何疫情的地方回到北京,然后被要求居家7天,然后北京日增十几例,就很无语……

想到明天要拿着我的小破电脑居家办公就头大,唉,匿了匿了,早点休息下吧,否则真怕我要无语死了……

以上是关于LeetCode笔记:Weekly Contest 317的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode笔记:Weekly Contest 317

LeetCode笔记:Weekly Contest 288

LeetCode笔记:Weekly Contest 299

LeetCode笔记:Weekly Contest 307

LeetCode笔记:Weekly Contest 325

LeetCode笔记:Weekly Contest 314