力扣404周赛 T1/T2/T3 枚举/动态规划/数组/模拟

  • 博客主页:誓则盟约
  • 系列专栏:IT竞赛 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍ 

3200.三角形的最大高度【简单

题目:

给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行有 1 个球,第 2 行有 2 个球,第 3 行有 3 个球,依此类推。

每一行的球必须是 相同 颜色,且相邻行的颜色必须 不同

返回可以实现的三角形的 最大 高度。

示例 1:

输入: red = 2, blue = 4

输出: 3

解释:

上图显示了唯一可能的排列方式。

示例 2:

输入: red = 2, blue = 1

输出: 2

解释:

 

上图显示了唯一可能的排列方式。

示例 3:

输入: red = 1, blue = 1

输出: 1

示例 4:

输入: red = 10, blue = 1

输出: 2

解释:

 

上图显示了唯一可能的排列方式。

提示:

  • 1 <= red, blue <= 100

分析问题:

这里需要分情况讨论:

  • 奇排是蓝球:那么蓝色第一层初始值为1,往下每层个数依次+2,需要蓝色球的个数每次都加本层的个数。模拟过程,求出蓝色球的数量一共够放多少层。同样的办法求出红色球能放的总层数。两者去min值*2就是初定的层数,但是需要注意的是,这里当蓝色球层数大于红色球层数时,总层数是需要+1的,因为蓝球开始又以蓝球结束。总层数+1即为结果
  • 奇排是红球:同样的道理,设红球的初始值为1,求出层数即可。

        最后返回二者的max值即为答案。

        这道题容易产生一种错误的思路:数量多的球就应该放第一排,或者数量少的球就应该放第一排。这种思路是错的,可以自行验证。

代码实现:

class Solution:
    def maxHeightOfTriangle(self, red: int, blue: int) -> int:
        b,r=1,0
        h1,h2=1,0
        s1,s2=1,0
        while s1+h1+2<=blue:
            h1+=2
            b+=1
            s1+=h1
        while s2+h2+2<=red:
            h2+=2
            r+=1
            s2+=h2
        a=min(b,r)*2
        if b-r>=1: 
            a+=1

        r,b=1,0
        h1,h2=1,0
        s1,s2=1,0
        while s1+h1+2<=red:
            h1+=2
            r+=1
            s1+=h1
        while s2+(h2+2)<=blue:
            h2+=2
            b+=1
            s2+=h2
        k=min(b,r)*2
        if r-b>=1: k+=1
        return max(a,k)


 

3201.找出有效子序列的最大长度I【中等】 

题目: 

给你一个整数数组 nums

nums 的子序列 sub 的长度为 x ,如果其满足以下条件,则称其为 有效子序列

  • (sub[0] + sub[1]) % 2 == (sub[1] + sub[2]) % 2 == ... == (sub[x - 2] + sub[x - 1]) % 2

返回 nums 的 最长的有效子序列 的长度。

一个 子序列 指的是从原数组中删除一些元素(也可以不删除任何元素),剩余元素保持原来顺序组成的新数组。

示例 1:

输入: nums = [1,2,3,4]

输出: 4

解释:

最长的有效子序列是 [1, 2, 3, 4]

示例 2:

输入: nums = [1,2,1,1,2,1,2]

输出: 6

解释:

最长的有效子序列是 [1, 2, 1, 2, 1, 2]

示例 3:

输入: nums = [1,3]

输出: 2

解释:

最长的有效子序列是 [1, 3]

提示:

  • 2 <= nums.length <= 2 * 10**5
  • 1 <= nums[i] <= 10**7

分析问题:

         这个题是下面3202题的一种简单的情况,直接看下面一题的题解。

代码实现:

class Solution:
    def maximumLength(self, nums: List[int]) -> int:
        k=2
        f = [[0]*k for i in range(k)]
        for x in nums:
            x%=k
            for y in range(k):
                f[y][x]=f[x][y]+1
        return max(map(max,f))

 

3202.找出有效子序列的最大长度II【中等】 

题目:

给你一个整数数组 nums 和一个  整数 k 。

nums 的一个 

子序列

 sub 的长度为 x ,如果其满足以下条件,则称其为 有效子序列 :

  • (sub[0] + sub[1]) % k == (sub[1] + sub[2]) % k == ... == (sub[x - 2] + sub[x - 1]) % k

返回 nums 的 最长有效子序列 的长度。

示例 1:

输入:nums = [1,2,3,4,5], k = 2

输出:5

解释:

最长有效子序列是 [1, 2, 3, 4, 5] 。

示例 2:

输入:nums = [1,4,2,3,1,4], k = 3

输出:4

解释:

最长有效子序列是 [1, 4, 1, 4] 。

提示:

  • 2 <= nums.length <= 10**3
  • 1 <= nums[i] <= 10**7
  • 1 <= k <= 10**3

分析问题:

        这里的T3和T2是一个道理,只不过这里的k值可以是任意一个值。分析问题,看透问题的本质。其实这道题给的数组的原本的值并没用,我们需要的是他们各自对k取模之后的值,因为我们要比较的是他们的余数[0,k-1];

        对他们各自取模后,可以发现有效子序列的前两个值和后面第三个第四个值就是一个以2为周期的长度为2的数组。也就是说整个有效子序列里面奇数项是同一个数,偶数项是同一个数。奇数项还有可能等于偶数项。

        那么知道了这一点,我们用x遍历原数组nums,用y遍历0-k-1就可以可以得到一个递推关系式:f[y][x]=f[x][y]+1,因为以 3 2 结尾的话前面一个数一定是2,那么意思就是说 3 前面是以2 3 结尾的。所以f[3][2]=f[2][3]+1。

代码实现:

class Solution:
    def maximumLength(self, nums: List[int],k:int) -> int:
        f = [[0]*k for i in range(k)]
        for x in nums:
            x%=k
            for y in range(k):
                f[y][x]=f[x][y]+1
        return max(map(max,f))


 

总结:

T3代码详解:
  • 创建了一个二维列表 f ,大小为 k x k ,并初始化为全 0 。
  • 遍历 nums 列表中的每个元素 x ,将其对 k 取模的结果作为新的 x 。
  • 然后遍历 k 个值作为 y ,将 f[y][x] 的值设置为 f[x][y] + 1 。
  • 最后,使用 max(map(max, f)) 找出 f 中所有子列表中的最大值中的最大值,并将其作为结果返回。

考点:

  • 对列表的操作和遍历。
  • 二维列表的创建和使用。
  • map() 函数和 max() 函数的应用。

收获

  • 加深了对列表操作和遍历的理解,包括如何创建和修改二维列表。
  • 熟悉了 map() 函数和 max() 函数的结合使用,以找出复杂数据结构中的最大值。
  • 提高了通过代码解决数学问题的能力,例如通过取模运算和二维列表来处理数据之间的关系。

“前进!前进!!不择手段地前进!!!”——《三体:死神永生》 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用CiteSpace软件对知网文献进行关键词共现/聚类/突现分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Dubbo用法示例

1.version版本控制 比如我们现在有两个服务提供者&#xff0c;他们分别对这个接口的实现方式不一样&#xff0c;那么消费者通过代理对象到底调用哪个实现呢&#xff0c;这就可以通过version版本控制来实现&#xff0c;Reference注解的version和Service注解的version需要配对&am…

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数 一、问题描述二、解决方法 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 使用MATLAB批量读取图像文件&#xff0c;会发现提取出…

华为交换机基本命令配置(创建vlan、配置telnet登录)

<HUAWEI>system-view 进入系统视图 [HUAWEI]sysname SW1 交换机命名为SW1 [SW1]undo info-center enable 关闭消息中心 [SW1]quit 退出当前视图 <SW1>display vlan 查看vlan详情 <SW1>system-view 进入系统视图 [SW1]vlan 5 …

OpenSSL EVP详解

OpenSSL EVP详解 Chapter1 OpenSSL EVP详解一、EVP基本介绍1. EVP 加密和解密2. EVP 签名和验证3. EVP 加解密文件 二、源码结构2.1 全局函数2.2 BIO扩充2.3 摘要算法EVP封装2.4 对称算法EVP封装2.5 非对称算法EVP封装2.6 基于口令的加密 三、开发实例3.1 示例13.2 示例23.3 示…

Maya崩溃闪退常见原因及解决方案

Autodesk Maya 是一款功能强大的 3D 计算机图形程序&#xff0c;被电影、游戏和建筑等各个领域的设计师广泛使用。然而&#xff0c;Maya 就像任何其他软件一样可能会发生崩溃问题。在前文中&#xff0c;小编给大家介绍了3ds Max使用V-Ray渲染时的崩溃闪退解决方案&#xff1a; …

Xilinx FPGA:vivado关于单端ROM的一个只读小实验

一、实验要求 将生成好的voe文件里的数据使用rom读取出来&#xff0c;采用串口工具发送给电脑&#xff08;当按键来临时&#xff09;。 二、程序设计 按键消抖模块&#xff1a; timescale 1ns / 1ps module key_debounce(input sys_clk ,input rst_n…

vcruntime140_1.dll下载——修复vcruntime140_1.dll方法解析

vcruntime140_1.dll 是 Microsoft Visual C Redistributable 中的一个重要动态链接库文件。它在许多应用程序的正常运行中起着关键作用。然而&#xff0c;有时用户可能会遇到 vcruntime140_1.dll 丢失或损坏的情况&#xff0c;导致相关程序无法启动。在这种情况下&#xff0c;下…

代码随想录-二叉搜索树①

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 98. 验证二叉搜索树 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 530. 二叉搜索树的最小绝对差 题目描述&#x…

Windows Server 2008近源应急OS-1

前景需要&#xff1a;小王从某安全大厂被优化掉后&#xff0c;来到了某私立小学当起了计算机老师。某一天上课的时候&#xff0c;发现鼠标在自己动弹&#xff0c;又发现除了某台电脑&#xff0c;其他电脑连不上网络。感觉肯定有学生捣乱&#xff0c;于是开启了应急。 我们需要…

第三方软件测试公司分享:软件渗透测试的测试内容和注意事项

软件渗透测试是一种通过模拟攻击的方式来评估软件系统的安全性和漏洞&#xff0c;以发现并修复系统中的安全弱点。保护用户的数据和信息不被恶意攻击者利用&#xff0c;也是软件产品开发流程中重要的环节&#xff0c;可以帮助开发团队完善产品质量&#xff0c;提高用户满意度。…

VSG虚拟同步发电机simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 VSG虚拟同步发电机simulink建模与仿真&#xff0c;虚拟同步发电机&#xff08;Virtual Synchronous Generator, VSG&#xff09;技术是电力电子领域的一项重要创新&#xff0c…

Modbus RTU协议简介即CRC算法实现

目录 1 Modbus 介绍2 Modbus RTU协议传输方式2.1 地址码2.2 功能码2.3 数据码2.4 校验码 3 CRC算法实现2.1 代码3.2 运行结果 1 Modbus 介绍 Modbus是一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气 Schneider Electric&#xff09;于1979年为使用可编…

2024 6G无线通信AI大赛分享交流会暨颁奖典礼圆满落幕

7月1日&#xff0c;由IMT-2030(6G)推进组、IMT-2020(5G)推进组5G与AI融合研究任务组主办&#xff0c;OPPO广东移动通信有限公司承办的2024 6G无线通信AI大赛在北京顺利举行分享交流会暨颁奖典礼。主承办方专家、10支获奖团队代表及6G无线通信相关领域专业人才齐聚北京&#xff…

企业元宇宙3D云端数字化展厅扩大客户触及面

在浩瀚无垠的元宇宙中&#xff0c;一个立体、虚拟的数字空间正在等待您的探索与创造。如何在这片无边界的数字领域中快速搭建起属于您自己的虚拟展馆&#xff0c;已成为当今企业关注的焦点。 元宇宙数字展馆搭建&#xff0c;不仅是对新技术领域的探索&#xff0c;更是品牌创新与…

股指期货看盘技巧和方法分享!

股指期货看盘技巧&#xff0c;简单来说&#xff0c;就是要找到适合自己的方法&#xff0c;同时要考虑大的经济环境。做交易时&#xff0c;要勇敢&#xff0c;不要后悔。 1. 了解自己&#xff1a;首先&#xff0c;你得清楚自己是哪种类型的投资者。你是喜欢长期投资&#xff0c;…

迅睿CMS 后端配置项没有正常加载,上传插件不能正常使用

首先&#xff0c;尝试迅睿CMS官方提供的【百度编辑器问题汇总】解决方案来解决你的问题。你可以访问这个链接&#xff1a;官方解决方案。 如果按照【百度编辑器问题汇总】解决方案操作后&#xff0c;依然遇到“后端配置项没有正常加载&#xff0c;上传插件不能正常使用”的问题…

JL-33 手持式气象站/便携式气象站 小型气象站厂家 微型气象站

产品概述 手持式气象站是一款携带方便&#xff0c;操作简单&#xff0c;集多项气象要素于一体的可移动式气象观测仪器。产品采用传感器及芯片&#xff0c;能同时对空气温度、空气湿度、风速、风向、光照、大气压力、颗粒物、噪声等要素进行准确测量、记录并存储。仪器带有机械…

未对文件 xxx.ps1 进行数字签名,无法在当前系统上运行该脚本解决

无法执行PS1脚本&#xff1a; 解决方法: 启用远程签名策略 set-ExecutionPolicy RemoteSigned 启用签名策略后&#xff0c;成功执行ps1脚本 解决方法2: 使用当前用户签名策略&#xff1a; Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 成功运行ps1脚本 PowerShell I…

【计算机网络】网络层(作业)

【一】 1、某主机的 IP 地址为 166.199.99.96/19。若该主机向其所在网络发送广播 IP 数据报&#xff0c; 则目的地址可以是&#xff08;D&#xff09;。 A. 166.199.99.255B. 166.199.96.255C. 166.199.96.0D. 166.199.127.255 解析&#xff1a; 166.199.99.96/19166.199.0…