[LeetCode周赛复盘] 第 115 场双周赛20231014

news2024/11/19 14:40:50

[LeetCode周赛复盘] 第 115 场双周赛20231014

    • 一、本周周赛总结
    • 100095. 上一个遍历的整数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 100078. 最长相邻不相等子序列 I
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 100077. 最长相邻不相等子序列 II
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 100029. 和带限制的子多重集合的数目
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 参考链接

一、本周周赛总结

  • T1 模拟。
  • T2 贪心。
  • T3 DP类似LIS,构造路径方案。
  • T4 分组前缀和优化的分组背包求方案数。
    在这里插入图片描述

100095. 上一个遍历的整数

100095. 上一个遍历的整数

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

3. 代码实现

class Solution:
    def lastVisitedIntegers(self, words: List[str]) -> List[int]:
        ans = []
        nums = []
        k=0
        for v in words:
            if v[0].isdigit():
                nums.append(int(v))
                k = 0 
            else:
                k += 1 
                if k > len(nums):
                    ans.append(-1)
                else:
                    ans.append(nums[-k])
        return ans 

100078. 最长相邻不相等子序列 I

100078. 最长相邻不相等子序列 I

1. 题目描述

在这里插入图片描述

2. 思路分析

方法1
  • 枚举第一个g是0还是1,然后贪心的向后取位置。

方法2
  • 直接pairwise,相邻不同了,则可以取左边的,注意记得取最后一个。

3. 代码实现

class Solution:
    def getWordsInLongestSubsequence(self, n: int, words: List[str], groups: List[int]) -> List[str]:

        def f(s):
            ans = [0,[]]
            for w, g in zip(words,groups):
                if g == s:
                    ans[0]+=1
                    ans[1].append(w)
                    s ^= 1 
            return ans
       
        return max(f(0),f(1))[1]

100077. 最长相邻不相等子序列 II

100077. 最长相邻不相等子序列 II

1. 题目描述

在这里插入图片描述

2. 思路分析

  • n方dp。
  • 从前边满足的地方转移过来,注意记录一个from_index来储存路径。

3. 代码实现

def han(s, t):
    return sum(x!=y for x,y in zip(s,t))
class Solution:
    def getWordsInLongestSubsequence(self, n: int, words: List[str], groups: List[int]) -> List[str]:
        f = [1]*n 
        from_index = [-1]*n
        for i, (w, g) in enumerate(zip(words,groups)):
            for j in range(i):
                if g != groups[j] and len(w) == len(words[j]) and han(words[j], w) == 1 and f[j] >= f[i]:
                    f[i] = f[j] + 1
                    from_index[i] = j
        i = f.index(max(f))
        ans = []
        while i != -1:
            ans.append(words[i])
            i = from_index[i]
        return ans[::-1]                    

100029. 和带限制的子多重集合的数目

100029. 和带限制的子多重集合的数目

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 题目描述很复杂,但其实是分组背包求方案数。
  • 这样的话,值域是2e4,物品数也是2e4。n方会TLE。
  • 考虑优化,我们知道分组背包先遍历组,然后遍历体积,再遍历每组里的物品。
    • 可以看到内层,f[j] += f[j-k]+…f[j-k*c],这里累计了1~c,并且间隔是一样的,考虑用前缀和优化。
    • 可以用分组前缀和,类似滑窗。参考普通前缀和,我们向前边添加k个0,方便代码。
  • 注意到,题目限制sum(nums)<=2e4,那么不同的数字最多有多少组呢?显然最小是1,2,3~,那么不同数字组最多是开方级别的。
  • 因此复杂度变成了O(r√S)。

3. 代码实现

MOD = 10**9 + 7 
class Solution:
    def countSubMultisets(self, nums: List[int], l: int, r: int) -> int:
        cnt = Counter(nums)
        f = [cnt[0]+1] + [0] * r
        s = 0
        for k, c in cnt.items():
            if k == 0:continue
            s += k * c 
            pre = [0]*k             
            for v in f:
                pre.append((v+pre[-k])%MOD)
            for j in range(min(s, r), 0, -1):
                # f[j] += f[j-k]+..f[j-k*c]
                f[j] += pre[j] - pre[max(j-k*c, 0)]
                f[j] %= MOD 
        return sum(f[l:]) %MOD   

参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1095109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Premiere2024中Beat Edit插件点击没反应怎么办

今天在安装Beat Edit插件之后&#xff0c;小编遇到了一个问题&#xff0c;Beat Edit插件点击没有反应&#xff0c;该怎么解决这个问题呢&#xff1f;下面我们就来看看详细的教程。 此方法仅针对windows 用户 PR2024版本的问题 首先确定你已经安装完了插件 安装插件的方法&am…

Linux CentOS7 用户组管理

Linux操作系统基于多用户的设计理念&#xff0c;允许多个用户同时使用系统资源。用户是登录系统并使用系统资源的个体&#xff0c;其都有自己的账户和密码。用户组是将众多用户归类为一组。Linux中的用户和用户组是系统安全和权限管理的基础。本文将探讨Linux中用户组的创建和管…

word 如何编写4x4矩阵

百度上给的教程&#xff0c;打印出来没有对齐 https://jingyan.baidu.com/article/6b182309995f8dba58e159fc.html 百度上的方式试了一下&#xff0c;不会对齐。导致公式看起来很奇怪。 下面方式会自动对齐 摸索了一下发现可以用下面这种方式编写 4x4 矩阵。先创建一个 3x3…

雷电模拟器上使用第一个frida(三)简单的使用实例

经过前两篇 雷电模拟器上使用第一个frida&#xff08;一&#xff09;之安装-CSDN博客雷电模拟器上使用第一个frida&#xff08;二&#xff09;之su超级权限-CSDN博客 本篇开始记录如何使用frida进行hook。 一、先让手机模拟器端的frida server运行起来 虽然是让手机模拟器端…

简单聊一聊一种很新的DCDC电源-BOB电源

在DCDC电路中&#xff0c;除了我们熟悉的Boost Buck 以及Boost-Buck电路外&#xff0c;还存在着一个叫做Boost or Buck的电源&#xff0c;通常简称为BOB电源。 关于BOB电源&#xff0c;网上相关的介绍极少&#xff0c;小白也是在高通的电源芯片规格书中所看到了解到的。 在了…

word调整标题编号

需求 给上面的“能源站群控”编号&#xff0c;自动生成编号 3.3.1.2.3.1 步骤 第一步&#xff1a;选中“空调系统”&#xff0c;右键&#xff0c;段落&#xff0c;查看 空调系统的 大纲级别 第二步&#xff1a;选中“能源站群控”&#xff0c;右键&#xff0c;段落&#xff0…

Rust 流程控制

开发中最常见的用来控制执行流的结构是判断和循环。 判断 Rust 中的 if 表达式允许根据条件执行不同的代码分支&#xff0c;提供一个条件并表示 “如果条件满足&#xff0c;运行这段代码&#xff1b;如果条件不满足&#xff0c;不运行这段代码。” 需要注意的是&#xff0c;…

第三节:利用运行按钮运行VBA代码

《VBA之Excel应用》&#xff08;10178983&#xff09;是非常经典的&#xff0c;是我推出的第七套教程&#xff0c;定位于初级&#xff0c;目前是第一版修订。这套教程从简单的录制宏开始讲解&#xff0c;一直到窗体的搭建&#xff0c;内容丰富&#xff0c;实例众多。大家可以非…

【算法1-4】递推与递归-P1002 [NOIP2002 普及组] 过河卒

## 题目描述 棋盘上 A 点有一个过河卒&#xff0c;需要走到目标 B 点。卒行走的规则&#xff1a;可以向下、或者向右。同时在棋盘上 C 点有一个对方的马&#xff0c;该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示&#…

物联网AI MicroPython传感器学习 之 TDS水质检测传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 TDS是Total Dissolved Solids的缩写&#xff0c;中文名总溶解固体&#xff0c;也叫溶解性固体总量&#xff0c;他标识1升水中溶有多少毫克的可溶解性固体。一般来说&#xff0c;TDS值越高&…

CVPR 2023 | 数据驱动的解释对分布外数据具有鲁棒性吗?

论文链接&#xff1a; https://arxiv.org/abs/2303.16390 代码链接&#xff1a; https://github.com/tangli-udel/DRE 01. 研究背景&#xff1a;数据驱动的解释对分布外数据具有鲁棒性吗&#xff1f; 近年来&#xff0c;将黑盒机器学习&#xff08;ML&#xff09;模型用于高风…

1.14.C++项目:仿muduo库实现并发服务器之Util模块的设计

一、Util模块 二、实现思想 &#xff08;一&#xff09;管理 实现一些工具接口读取文件内容向文件写入内容URL编码URL解码通过HTTP状态码获取描述信息通过文件后缀名获取mime判断一个文件是不是目录判断一个文件是否是一个普通文件HTTP资源路径有效性判断 &#xff08;二&am…

《视觉SLAM十四讲》公式推导(一)

文章目录 CH3 三维空间刚体运动CH3-1 旋转矩阵的推导CH3-2 旋转矩阵是正交矩阵的证明CH3-3 变换矩阵的逆的推导CH3-4 罗德里格斯公式推导 CH3 三维空间刚体运动 CH3-1 旋转矩阵的推导 &#xff08;1&#xff09;二维空间中的旋转矩阵 易得 { x ′ ∣ O P ′ ∣ c o s ( θ …

高校教务系统登录页面JS分析——重庆交通大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

云耀服务器L实例部署Discuz!Q论坛|华为云云耀云服务器L实例评测使用体验

文章目录 云耀服务器L实例部署Discuz&#xff01;Q论坛1. 华为云云耀服务器L实例介绍2. Discuz!Q 简介3. 部署华为云云耀服务器L实例3.1 云耀服务器L实例购买3.1.1 云耀服务器L实例初始化配置3.1.2 远程登录云耀服务器L实例 4. Discuz!Q安装部署4.1 Apache安装4.2 中间件配置4.…

SpringCloud:分布式事务Seata部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包&#xff0c;地址在http://seata.io/zh-cn/blog/download.html 2.解压 在非中文目录解压缩这个zip包&#xff0c;其目录结构如下&#xff1a; 3.修改配置 修改conf目录下的registry.conf文件&#xff1a; 内容…

【重拾C语言】十三、动态数据组织(二)链表(创建、遍历检索、插入、删除、交换)

目录 前言 十三、动态数据组织 13.1~2 动态数据组织、动态变量 13.3 链表 13.3.1 单向链表—创建 13.3.2 单向链表—遍历检索 13.3.3 单向链表—插入、删除与交换 13.3.4 单向链表—例题 13.3.5 栈和队列 前言 链表是一种常见的动态数据结构&#xff0c;它由一系列节点…

【Kolla-ansible 16.1.0.dev156】部署/评估快速入门(报错的文章,后面不用看了)

Kolla-ansible 16.1.0.dev156 部署/评估快速入门 报错的文章&#xff0c;后面不用看了 主机必须满足以下最低要求&#xff1a; 2 个网络接口 8GB 主内存 40GB 磁盘空间 rootubuntu:~# sudo apt update Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease Get:2…

【LeetCode 算法专题突破】双指针(⭐)

文章目录 前言1. 移动零题目描述代码 2. 复写零题目描述代码 3. 快乐数题目描述代码 4. 盛最多水的容器题目描述代码 5. 有效三角形的个数题目描述代码 6. 三数之和题目描述代码 7. 四数之和题目描述代码 总结 前言 学算法入门必学的一个章节&#xff0c;双指针算法&#xff0…

Maven 快速入门

文章目录 一、Maven 间接和快速入门1.1 Maven 介绍1.2 Maven 主要作用理解1.3 Maven 安装和配置 二、基于 IDEA 的 Maven 工程创建2.1 梳理 Maven 工程 GAVP 属性2.2 IDEA 构建 Maven JavaSE 工程2.3 IDEA 构建 Maven JavaEE 工程2.4 Maven 工程项目结构说明 三、Maven 核心功能…