LeetCode笔记:Biweekly Contest 93

本文提供了LeetCode双周赛93的四道题目的解题思路及Python代码实现,包括字符串数组的最大值、图的最大星形和、青蛙跳跃II以及使数组不相等的最小总成本。

1. 题目一

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

1. 解题思路

这一题按照题意翻译一下,然后找出最大值就行了。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maximumValue(self, strs: List[str]) -> int:
        def fn(s):
            try:
                return int(s)
            except:
                return len(s)
        return max(fn(s) for s in strs)

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

2. 题目二

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

1. 解题思路

这一题同样就是基本按照题目翻译一下就行。

我们找到每一个点作为中心时其邻接的最大的k个正值点,作为找到的星图,然后计算其最大值即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maxStarSum(self, vals: List[int], edges: List[List[int]], k: int) -> int:
        if k == 0:
            return max(vals)
        graph = defaultdict(list)
        for u, v in edges:
            heapq.heappush(graph[u], -vals[v])
            heapq.heappush(graph[v], -vals[u])
        res = -math.inf
        for u, val in enumerate(vals):
            s = val
            q = graph[u]
            for _ in range(k):
                if q == []:
                    break
                v = -heapq.heappop(q)
                if v <= 0:
                    break
                s += v
            res = max(res, s)
        return res

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

3. 题目三

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

1. 解题思路

这一题说来惭愧,做算是做出来了,但是完整的理论证明倒是没想得很明白,只是直觉地感觉必须是间隔走个来回这样。

感觉用反证法应该可以说明这个问题,不过体谅下病号吧,既然通过了全部测试样例应该就没啥太大问题了,就不细想了……

2. 代码实现

给出python代码实现如下:

class Solution:
    def maxJump(self, stones: List[int]) -> int:
        n = len(stones)
        s1 = max([0] + [stones[i+2] - stones[i] for i in range(0, n-2, 2)])
        s2 = max([0] + [stones[i+2] - stones[i] for i in range(1, n-2, 2)])
        return max(s1, s2, stones[1]-stones[0], stones[-1]-stones[-2])

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

4. 题目四

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

这一题实在是没啥思路,放弃了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值