LeetCode笔记:Biweekly Contest 98

Posted Espresso Macchiato

tags:

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

1. 题目一

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

1. 解题思路

这一题思路上比较直接,就是分别找到最大和最小的变换数字,然后求差即可。

而要获得最大/最小的数,只需要把从头开始的第一个不是9/0的数字全部换为9/0即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def minMaxDifference(self, num: int) -> int:
        s = str(num)
        
        def replace(s, tgt):
            src = ""
            res = []
            for ch in s:
                if ch != tgt and src == "":
                    src = ch
                if ch == src:
                    res.append(tgt)
                else:
                    res.append(ch)
            return int("".join(res))
        
        return replace(s, "9") - replace(s, "0")

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

2. 题目二

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

1. 解题思路

这一题要获得所有可能中的最小值,我们只要分别令low和high均能取到最小即可。

事实上,我们总可以令low为0,而要令high最小,其实就是让排序之后的首尾数据差值最小,因此,事实上我们就是比较以下三种情况中的最小值:

  1. 最大元素与第三小元素的差值;
  2. 第二大元素与第二小元素的差值;
  3. 第三大元素与最小元素的差值;

2. 代码实现

给出python代码实现如下:

class Solution:
    def minimizeSum(self, nums: List[int]) -> int:
        nums = sorted(nums)
        return min(nums[-1]-nums[2], nums[-3]-nums[0], nums[-2]-nums[1])

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

3. 题目三

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

1. 解题思路

这一题通过反证法不难证明,最小的无法被构成的数一定是2的幂次方,且其只能靠自己来实现。

因此,我们只需要依序不断的考察2的幂次是否存在于给定的数组当中即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def minImpossibleOR(self, nums: List[int]) -> int:
        nums = set(nums)
        res = 1
        for _ in range(32):
            if res not in nums:
                return res
            res *= 2
        return res

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

4. 题目四

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

这一题放弃了,实在是没啥思路,主要是关于第一个操作,对于第二、第三个操作,我们只需要不断地维护一下nums2的数组之和即可,而关于第二个操作,我们事实上就是在nums2原有的和的基础上加上 p × ∑ ( n 1 i ) p \\times \\sum(n_1i) p×(n1i)

但是问题就是如何在频繁地进行1操作之后能够快速地维护和获取nums1的数据求和,这个暂时没有想到一个很好的思路,就卡在这个里面了……

如果有大佬知道这个问题的解法的话请务必指导一下!

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

LeetCode笔记:Biweekly Contest 79

LeetCode笔记:Biweekly Contest 93

LeetCode笔记:Biweekly Contest 89

LeetCode笔记:Biweekly Contest 69

LeetCode笔记:Biweekly Contest 74

LeetCode笔记:Biweekly Contest 96