LeetCode笔记:Biweekly Contest 112

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

  • LeetCode笔记:Biweekly Contest 112
    • 0. 吐槽
    • 1. 题目一
      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接:https://leetcode.com/contest/biweekly-contest-112/

0. 吐槽

这一次的双周赛题目委实是有点水了,难怪第一名的大佬只花了8分钟就全部搞定了……

1. 题目一

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

  • 2839. Check if Strings Can be Made Equal With Operations I

1. 解题思路

这一题其实不难看出:

  1. 奇数和偶数位上的字符不会交叉变化,即奇数位上的字符永远在奇数位上,偶数位的字符永远在偶数位上;
  2. 奇偶性相同的字符经过若干次变换可以变换为任意顺序;

因此,要使得两个string可以相同,只要判断奇偶位上的字符是否一致即可,我们统计一下频次即可完成。

2. 代码实现

给出python代码实现如下:

class Solution:
    def canBeEqual(self, s1: str, s2: str) -> bool:
        odd1 = Counter(s1[1::2])
        odd2 = Counter(s2[1::2])
        even1 = Counter(s1[::2])
        even2 = Counter(s2[::2])
        return all(odd2[k] == v for k, v in odd1.items()) and all(even2[k] == v for k, v in even1.items())

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

2. 题目二

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

  • 2840. Check if Strings Can be Made Equal With Operations II

1. 解题思路

这一题虽然形式变换了一下,string长度也变得比较长,但是本质上和第一题是完全一样的,我们复用第一题的代码即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def checkStrings(self, s1: str, s2: str) -> bool:
        odd1 = Counter(s1[1::2])
        odd2 = Counter(s2[1::2])
        even1 = Counter(s1[::2])
        even2 = Counter(s2[::2])
        return all(odd2[k] == v for k, v in odd1.items()) and all(even2[k] == v for k, v in even1.items())

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

3. 题目三

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

  • 2841. Maximum Sum of Almost Unique Subarray

1. 解题思路

这一题用一个滑动窗口考察一下所有的连续长度为 k k k的subarray当中unique字符的个数是否不少于 m m m个,然后对符合的subarray求一下最大值即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maxSum(self, nums: List[int], m: int, k: int) -> int:
        res = 0
        cnt, s = {}, 0
        for i, x in enumerate(nums):
            if x not in cnt:
                cnt[x] = 1
            else:
                cnt[x] += 1
            s += x
            if i-k >= 0:
                cnt[nums[i-k]] -= 1
                s -= nums[i-k]
                if cnt[nums[i-k]] == 0:
                    cnt.pop(nums[i-k])
            if i >= k-1 and len(cnt) >= m:
                res = max(res, s)
        return res

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

4. 题目四

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

  • 2842. Count K-Subsequences of a String With Maximum Beauty

1. 解题思路

这道题其实也不难,我们首先统计一下原始的string当中各个字符出现的频次,即题目中 f ( c ) f(c) f(c)函数,然后要给出一个长度为 k k k的unique array,使得beauty最大,也就是 f ( c ) f(c) f(c)的和最大,那么,其结果就必然是在所有的字符当中挑选 f ( c ) f(c) f(c)最大的 k k k个字符来组成一个子序列。

因此,这个题目就变成了一个排列组合问题,首先在所有的 f ( c ) f(c) f(c)当中挑选最大的 k k k个值,如果有重复的,那么就是从中在进行一次挑选组合数,然后将其对应的值(可选项)连乘即可得到最终的答案。

2. 代码实现

给出python代码实现如下:

class Solution:
    def countKSubsequencesWithMaxBeauty(self, s: str, k: int) -> int:
        MOD = 10**9 + 7
        
        freq = Counter(s)
        freq = sorted(freq.values(), reverse=True)

        if k > len(freq):
            return 0
        
        def C(n, k):
            res = 1
            for i in range(k):
                res = res * (n-i) // (i+1)
            return res
                
        
        tgt = Counter(freq[:k])
        cnt = Counter(freq)
        res = 1
        for k, v in tgt.items():
            res = (res * C(cnt[k], v) * pow(k, v, MOD)) % MOD
        return res

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

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

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

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

相关文章

  • 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/ 给出题目一的试题链接如下: 2778. Sum of Squares of Special Elements

    2024年02月16日
    浏览(34)
  • LeetCode笔记:Weekly Contest 349

    LeetCode笔记:Weekly Contest 349 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 比赛链接:https://leetcode.com/contest/weekly-contest-349 给出题目一的试题链接如下: 2733. Neither Minimum nor Maximum 1. 解题思路 这一题我实现的比较

    2024年02月08日
    浏览(30)
  • LeetCode笔记:Weekly Contest 357

    LeetCode笔记:Weekly Contest 357 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 比赛链接:https://leetcode.com/contest/weekly-contest-357 给出题目一的试题链接如下: 2810. Faulty Keyboard 1. 解题思路 这一题就是按照题目给出的条

    2024年02月14日
    浏览(36)
  • LeetCode笔记:Weekly Contest 359

    LeetCode笔记:Weekly Contest 359 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 比赛链接:https://leetcode.com/contest/weekly-contest-359 给出题目一的试题链接如下: 2828. Check if a String Is an Acronym of

    2024年02月12日
    浏览(35)
  • Leetcode—112.路径总和【简单】

    之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

    2024年02月04日
    浏览(34)
  • 【算法与数据结构】112、LeetCode路径总和

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :本题通过计算根节点到叶子节点路径上节点的值之和,然后再对比目标值。利用文章【算法和数据结构】257、LeetCode二叉树的所有路径中的递归算法。 这里要注意,默认路径之和是

    2024年02月11日
    浏览(52)
  • 算法训练day18Leetcode找树左下角的值112路径总和106从中序和后续遍历构造二叉树

    找出深度最大的叶子节点,左遍历在前 我们来分析一下题目:在树的最后一行找到最左边的值。 首先要是最后一行,然后是最左边的值。 如果使用递归法,如何判断是最后一行呢,其实就是深度最大的叶子节点一定是最后一行。 如果对二叉树深度和高度还有点疑惑的话,请

    2024年01月21日
    浏览(52)
  • Day18|leetcode 513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树

    题目链接:513. 找树左下角的值 - 力扣(LeetCode) 视频链接:怎么找二叉树的左下角? 递归中又带回溯了,怎么办?| LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili 给定一个二叉树的  根节点   root ,请找出该二叉树的  最底层 最左边  节点的值。 假设二叉树中至少有一

    2024年02月10日
    浏览(41)
  • 455. 分发饼干 - 力扣(LeetCode)

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] = g[i],我们可以将这个饼干 j 分配给孩子 i ,这

    2024年01月25日
    浏览(47)
  • 37. 解数独 - 力扣(LeetCode)

    题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 输入

    2024年01月24日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包