LeetCode笔记:Weekly Contest 255(补发)

1. 题目一

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

1. 解题思路

这一题同样没啥好多说的,就是找到最大值和最小值,然后计算一下最大公约数即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def findGCD(self, nums: List[int]) -> int:
        
        def gcd(x, y):
            if x % y == 0:
                return y
            return gcd(y, x % y)
        
        return gcd(max(nums), min(nums))

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

2. 题目二

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

1. 解题思路

这一题我的思路是通过trie树进行的代码实现,倒是也没啥,然后看了一下别人的解法,感觉有点做烦了,因为要求数组中的数据总数和总的数据的位数是相同的,因此事实上大部分的数字事实上不会出现在给出的数组当中的。

因此,我们只要枚举出对应位数下的所有数字,总是找到没出现过的数字的几率更大。

不过无论如何,我们的方法总是更加一般性一点。

2. 代码实现

给出python代码实现如下:

class Trie:
    def __init__(self, n):
        self.trie = {}
        self.length = n
        
    def add(self, s):
        trie = self.trie
        for c in s:
            trie = trie.setdefault(c, {})
        trie[c] = "eos"
        
    def get_another(self):
        
        def dfs(trie, k):
            if k == self.length:
                return "eos"
            if "0" not in trie:
                return "0" * (self.length - k)
            elif "1" not in trie:
                return "1" * (self.length - k)
            else:
                s1 = "0" + dfs(trie["0"], k+1)
                s2 = "1" + dfs(trie["1"], k+1)
                return s1 if len(s1) < len(s2) else s2
            
        return dfs(self.trie, 0)
            
    
class Solution:
    def findDifferentBinaryString(self, nums: List[str]) -> str:
        n = len(nums)
        trie = Trie(n)
        for s in nums:
            trie.add(s)
        return trie.get_another()

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

3. 题目三

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

1. 解题思路

这一题解法非常之暴力,因为数字本身并不大,因此,就可以直接把所有可能的结果全部一次性计算出来,然后计算和target之间的最小绝对值即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def minimizeTheDifference(self, mat: List[List[int]], target: int) -> int:
        seen = [0]
        for line in mat:
            new = {x+y for x in line for y in seen}
            seen = list(new)
        return min([abs(x-target) for x in seen])

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

4. 题目四

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

这一题没有搞定,有兴趣的读者可以看看官方解答,挺巧妙的,很有意思的一道题目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值