LeetCode笔记:Weekly Contest 354

这篇具有很好参考价值的文章主要介绍了LeetCode笔记:Weekly Contest 354。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • LeetCode笔记:Weekly Contest 354
    • 1. 题目一
      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接:https://leetcode.com/contest/weekly-contest-354/

1. 题目一

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

  • 2778. Sum of Squares of Special Elements

1. 解题思路

这一题思路很直接,就是找到对应的几个能够被n整除的位置然后将对应元素的平方相加即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def sumOfSquares(self, nums: List[int]) -> int:
        res = 0
        n = len(nums)
        for i in range(1, n+1):
            if n % i == 0:
                res += nums[i-1] * nums[i-1]
        return res

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

2. 题目二

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

  • 2779. Maximum Beauty of an Array After Applying Operation

1. 解题思路

这一题由于不要求连续,因此就和顺序无关,我们只需要先对所有元素进行排序,然后遍历一下滑动窗口,使得左右距离不超过 2 k 2k 2k即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maximumBeauty(self, nums: List[int], k: int) -> int:
        nums = sorted(nums)
        i, j, n = 0, 0, len(nums)
        res = 0
        while j < n:
            while nums[j] - nums[i] > 2 * k:
                i += 1
            res = max(res, j-i+1)
            j += 1
        return res

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

3. 题目三

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

  • 2780. Minimum Index of a Valid Split

1. 解题思路

这一题思路上也非常直接,就是先找出dominate的元素以及其对应的个数,然后遍历一下分隔点,找出最早能够符合条件的切分位置即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def minimumIndex(self, nums: List[int]) -> int:
        n = len(nums)
        
        def find_dominate(nums):    
            cnt = Counter(nums)
            res = [x for x in cnt if cnt[x] * 2 > n]
            dominate = res[0]
            return dominate, cnt[dominate]
        
        domi, dcnt = find_dominate(nums)
        cnt = defaultdict(int)
        for i, x in enumerate(nums):
            cnt[x] += 1
            if cnt[domi] * 2 > i+1 and (dcnt - cnt[domi]) * 2 > n-i-1:
                return i
        return -1

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

4. 题目四

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

  • 2781. Length of the Longest Valid Substring

1. 解题思路

这次的最后一题是一个字典树(trie树)的变体。

我们首先用forbidden数组构造一个字典树,然后从后往前考虑每一个点作为终点时可以取到的最长的subarray,此时我们只需要不断地滑动遍历开始的位置,直到存在某一个位置使得这个subarray以某个forbidden当中的词作为开头。此时,我们更新终止节点为这个词的倒数第二个字符位置即可。

而关于字典树的相关内容,我在之前一个博客【经典算法:Trie树结构简介】已经有过介绍了,这里就不进行展开了。

2. 代码实现

给出python代码实现如下:

class Trie:
    def __init__(self):
        self.trie = {}
    
    def add_word(self, word):
        trie = self.trie
        for c in word:
            trie = trie.setdefault(c, {})
        trie["eos"] = word
        return
    
    def find(self, s):
        trie = self.trie
        for ch in s:
            if ch not in trie:
                return ""
            trie = trie[ch]
            if "eos" in trie:
                return trie["eos"]
        return ""

class Solution:
    def longestValidSubstring(self, word: str, forbidden: List[str]) -> int:
        trie = Trie()
        for w in forbidden:
            trie.add_word(w)
            
        s = ""
        res = 0
        for ch in word[::-1]:
            s = ch + s
            w = trie.find(s)
            if w != "":
                s = w[:-1]
            res = max(res, len(s))
        return res

提交代码评测得到:耗时2358ms,占用内存194.3MB。文章来源地址https://www.toymoban.com/news/detail-571043.html

到了这里,关于LeetCode笔记:Weekly Contest 354的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode第354场周赛

    给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 对 nums 中的元素 nums[i] 而言,如果 n 能够被 i 整除,即 n % i == 0 ,则认为 num[i] 是一个 特殊元素 。 返回 nums 中所有 特殊元素 的 平方和 。 直接模拟就好了 给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。 在一

    2024年02月16日
    浏览(32)
  • leetcode第354场周赛补题

    6889. 特殊元素平方和 - 力扣(LeetCode) 思路:模拟 6929. 数组的最大美丽值 - 力扣(LeetCode) 思路:排序+双指针 6927. 合法分割的最小下标 - 力扣(LeetCode) 思路:哈希+枚举 6924. 最长合法子字符串的长度 - 力扣(LeetCode) 思路:哈希+双指针

    2024年02月16日
    浏览(26)
  • 【力扣周赛】第350场周赛

    题目描述 描述:卡车有两个油箱。给你两个整数,mainTank 表示主油箱中的燃料(以升为单位),additionalTank 表示副油箱中的燃料(以升为单位)。 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了 5 升燃料时,如果副油箱至少有 1 升燃料,则会将 1 升燃料从副油箱

    2024年02月09日
    浏览(41)
  • 【力扣周赛】第 352 场周赛

    第 352 场周赛 2760. 最长奇偶子数组 提示: 1 = nums.length = 100 1 = nums[i] = 100 1 = threshold = 100 因为数据范围特别小,所以怎么暴力都是无所谓的。 继续优化 可以发现,每个满足条件的子数组是不会重叠的, 所以在枚举 l 的时候,每次可以将下一个 l 设置成 r。 代码如下: 2761. 和

    2024年02月12日
    浏览(27)
  • 【力扣周赛】第357场周赛

    题目描述 描述:你的笔记本键盘存在故障,每当你在上面输入字符 ‘i’ 时,它会反转你所写的字符串。而输入其他字符则可以正常工作。 给你一个下标从 0 开始的字符串 s ,请你用故障键盘依次输入每个字符。 返回最终笔记本屏幕上输出的字符串。 示例 1: 示例 2: 提示

    2024年02月13日
    浏览(27)
  • 【力扣周赛】第 357 场周赛(⭐反悔贪心)

    https://leetcode.cn/contest/weekly-contest-357/ https://leetcode.cn/problems/faulty-keyboard/ 提示: 1 = s.length = 100 s 由小写英文字母组成 s[0] != \\\'i\\\' 遇到 ‘i’ 翻转已有的字符串,其它字符直接添加即可。 用一个变量维护当前翻转了几次,来决定新来的字符添加在开头还是结尾。 https://leetcode.cn

    2024年02月09日
    浏览(29)
  • 力扣周赛日记350

    早上兴高采烈起床写周赛,结果写完两题开始坐牢。菜的很。 LeetCode 第 350 场周赛 LeetCode 6901. 总行驶距离 2.1.1 题意 卡车两个油箱,耗油1L行驶10km。油箱A耗5L,油箱B给邮箱A油1L。油箱A空后停止行驶,求可行使距离。 2.1.2 分析 开始想O(1)解法,发现这题主要问题在油箱B给了油箱

    2024年02月10日
    浏览(29)
  • 【力扣周赛】第 113 场双周赛(贪心&异或性质&换根DP)

    https://leetcode.cn/contest/biweekly-contest-113/ https://leetcode.cn/problems/minimum-right-shifts-to-sort-the-array/ 提示: 1 = nums.length = 100 1 = nums[i] = 100 nums 中的整数互不相同。 因为数据范围很小,所以可以从小到大枚举可能的答案。 https://leetcode.cn/problems/minimum-array-length-after-pair-removals/ 提示: 1

    2024年02月07日
    浏览(25)
  • LeetCode笔记:Biweekly Contest 107

    LeetCode笔记:Biweekly Contest 107 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 算法优化 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 比赛链接:https://leetcode.com/contest/biweekly-contest-107/ 给出题目一的试题链接如下: 2744. Find Maximum N

    2024年02月11日
    浏览(26)
  • LeetCode笔记:Biweekly Contest 108

    LeetCode笔记:Biweekly Contest 108 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 比赛链接:https://leetcode.com/contest/biweekly-contest-108/ 给出题目一的试题链接如下: 2765. Longest Alternating Subarray 1

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包