Leetcode周赛 | 2023-7-23

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

题1

Leetcode周赛 | 2023-7-23,leetcode,算法

体会

01背包啊。01背包啊!怎么能一直往回溯上想!还是对动态规划太不熟悉了!这不就是01背包吗?还要别人提示才知道。

我的代码

class Solution:
    def numberOfWays(self, n: int, x: int) -> int:
        maxi = int(pow(n,1/x))+2
        dp = [0]*(n+1)
        dp[0] = 1
        for i in range(1,maxi):
            for j in range(n,0,-1):
                if j >= pow(i,x):
                    dp[j] += dp[j-pow(i,x)]
                
        return dp[n] % (pow(10,9)+7)
                

题2

Leetcode周赛 | 2023-7-23,leetcode,算法

我的代码

哈希,用双指针应该也可以。

class Solution:
    def sortVowels(self, s: str) -> str:
        t = list(s)
        temp = ['a','e','i','o','u','A','E','I','O','U']
        index = []
        n = len(s)
        haxi = [0]*58
        for i in range(n):
            if s[i] in temp:
                index.append(i)
                haxi[ord(s[i])-ord('A')]+=1
            else:
                t[i] = s[i]
        index.sort()
        count = 0
        for i in range(58):
            if haxi[i]!=0 :
                while haxi[i] :
                    t[index[count]] = chr(i + ord('A'))
                    count += 1
                    haxi[i]-=1
        return ''.join(t)
                
            

题3

Leetcode周赛 | 2023-7-23,leetcode,算法

体会

也是动态规划啊!怎么能又想回溯!这道题如果两层遍历会超时,要保存前面遍历过的,当前点为奇数的最大值,和当前点为偶数的最大值。

这个地方比较绕,可能想不明白,这里的奇偶性,指的是,当前遍历到的 nums[i] ,最大值指的是,下标在当前点的,得分总和的最大值。

因为当前位置的最大价值一定是由前面某个位置过来的,前面的那个位置的数,不是奇数就是偶数,那么我记录奇数的最大价值,和偶数的最大价值,就可以推出,当前点的最大价值了!

因为,当节点从 nums[j] 移动到 nums[i] 时,所获得的得分跟 nums[i] 有关,而和nums[j]没有直接关系,nums[j]的值,已经包含在最大价值中了。文章来源地址https://www.toymoban.com/news/detail-605011.html

我的代码

class Solution:
    def maxScore(self, nums: List[int], x: int) -> int:
        
        n = len(nums)
        dp = [-inf]*n
        
        dp[0] = nums[0]  
        maxi = nums[0]
        maxji = -inf
        maxou = -inf
        if nums[0] % 2 == 0:
            maxou = nums[0]
        else :
            maxji = nums[0]
        
        for i in range(1,n):      
            if nums[i] % 2 == 0 :
                
                dp[i] = max(maxou+nums[i],maxji+nums[i]-x)
                maxou = max(maxou,dp[i])
            else :
                dp[i] = max(maxou+nums[i]-x,maxji+nums[i])
                maxji = max(maxji,dp[i])
            
            maxi = max(maxi,dp[i])
        
        return maxi
        
        

到了这里,关于Leetcode周赛 | 2023-7-23的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • LeetCode 周赛 343(2023/04/30)结合「下一个排列」的贪心构造问题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 今天是五一假期的第二天,打周赛的人数比前一天的双周赛多了,难道大家都只玩一天吗?这场周赛是 LeetCode 第 343 场单周赛,如果不考虑第一题摆烂的翻译,整体题目质量还是

    2024年02月02日
    浏览(29)
  • LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没有少太多。这场比赛前 3 题比较简单,我们把篇幅留给最后一题。 往期周赛回顾:LeetCode 单周赛第

    2024年02月02日
    浏览(54)
  • LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 LeetCode 单周赛第 345 场 · 体验一题多解的算法之美 T1. 删除子串后的字符串最小长度(Easy) 标签:栈 T2. 字典序最小回文串(Medium) 标签:贪心、双指针 T3. 求一个整数的惩罚数(Medium) 标签:回溯

    2024年02月05日
    浏览(59)
  • LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 往期回顾:LeetCode 单周赛第 344 场 · 手写递归函数的通用套路 T1. 老人的数目(Easy) 标签:模拟、计数 T2. 矩阵中的和(Medium) 标签:模拟、排序 T3. 最大或值(Medium) 标签:动态规划、前后缀分解

    2024年02月04日
    浏览(44)
  • LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 往期回顾:LeetCode 单周赛第 346 场 · 仅 68 人 AK 的最短路问题 T1. 移除字符串中的尾随零(Easy) 标签:模拟、字符串 T2. 对角线上不同值的数量差(Easy) 标签:前后缀分解 T3. 使所有字符相等的最小

    2024年02月06日
    浏览(37)
  • 2023-08-23 LeetCode每日一题(统计点对的数目)

    点击跳转到题目位置 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成,其中 edges[i] = [u i , v i ] 表示 u i 和 v i 之间有一条无向边。同时给你一个代表查询的整数数组 queries 。 第 j 个查询的答案是满足如下条件的点对 (a, b) 的数目: a b cnt 是与 a 或者 b

    2024年02月11日
    浏览(42)
  • 【LeetCode周赛】LeetCode第370场周赛

    一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 = i, j = n - 1 且 i != j 的所有 i, j :如果 grid[i][j] == 1,那么 i 队比 j 队 强 ;否则,j 队比 i 队 强 。 在这场比赛中,如果不存在某支强于 a 队的队伍,则认为

    2024年02月05日
    浏览(37)
  • 【LeetCode周赛】LeetCode第358场周赛

    给你一个下标从0开始的整数数组nums。请你从nums中找出和最大的一对数,且这两个数数位上最大的数字相等。 返回最大和,如果不存在满足题意的数字对,返回 -1 。 示例 1: 输入:nums = [51,71,17,24,42] 输出:88 解释: i = 1 和 j = 2 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这

    2024年02月12日
    浏览(28)
  • 【LeetCode周赛】LeetCode第359场周赛

    给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,“ab” 可以由 [“apple”, “banana”] 形成,但是无法从 [“bear”, “aardvark”

    2024年02月10日
    浏览(33)
  • [LeetCode108双周赛&LeetCode353周赛] 学习用记忆化搜索解决 DP 问题

    参考灵神直播和代码 @cache 装饰器的作用:将传入不同参数得到的函数值存储到缓存,避免下次传递相同参数重复计算结果,可用于解决递归函数重复计算问题,比如递归求斐波那契问题。 https://leetcode.cn/problems/maximum-number-of-jumps-to-reach-the-last-index/ 记忆化搜索 dfs(i) 表示以

    2024年02月13日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包