LeetCode第11~15题解
CONTENTS
- LeetCode 11. 盛最多水的容器(中等)
- LeetCode 12. 整数转罗马数字(中等)
- LeetCode 13. 罗马数字转整数(简单)
LeetCode 11. 盛最多水的容器(中等)
【题目描述】
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
【示例1】

输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
【示例2】
输入:height = [1,1]
输出:1
【提示】
n = h e i g h t . l e n g t h n = height.length n=height.length
2 ≤ n ≤ 1 0 5 2\le n\le 10^5 2≤n≤105
0 ≤ h e i g h t [ i ] ≤ 1 0 4 0\le height[i]\le 10^4 0≤height[i]≤104
【分析】
很巧妙的一道贪心思维题,我们先在最左边和最右边设置两个指针,每次将指针指向的数较小的那个指针往中间靠拢一格,且每次都维护一遍最大值即可。因为当一个指针往中间移动时,矩形的宽度缩小了,想要面积变大,那肯定需要指针指向的数值(即矩形高度)变大,而矩形的高度的瓶颈在于较短的那一条边,因此移动较小的指针。
【代码】
class Solution {
public:int maxArea(vector<int>& height) {int res = 0;for (int l = 0, r = height.size() - 1; l < r; ){res = max(res, (r - l) * min(height[l], height[r]));if (height[l] < height[r]) l++;else r--;}return res;}
};
LeetCode 12. 整数转罗马数字(中等)
【题目描述】
罗马数字包含以下七种字符:I,V,X,L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如,罗马数字 2 写做 II,即为两个并列的 1。12 写做 XII,即为 X + II。27 写做 XXVII,即为 XX + V + II。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I可以放在V(5)和X(10)的左边,来表示 4 和 9。X可以放在L(50)和C(100)的左边,来表示 40 和 90。C可以放在D(500)和M(1000)的左边,来表示 400 和 900。
给你一个整数,将其转为罗马数字。
【示例1】
输入: num = 3
输出: "III"
【示例2】
输入: num = 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
【示例3】
输入: num = 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
【提示】
1 ≤ n u m ≤ 3999 1\le num\le 3999 1≤num≤3999
【分析】

我们先打个表找规律,把几个特殊的数字打表记下来,然后从高到低枚举,以 2964 为例,先循环判断是否大于1000,若满足则减去1000并在答案中添加 M,整个模拟流程如下:
2964 ""
1964 "M"
964 "MM"
64 "MMCM"
14 "MMCML"
4 "MMCMLX"
0 "MMCMLXIV"
【Python代码】
class Solution:def intToRoman(self, num: int) -> str:dic = collections.OrderedDict(M=1000, CM=900, D=500, CD=400, C=100, XC=90,L=50, XL=40, X=10, IX=9, V=5, IV=4, I=1)res = ''for k, v in dic.items():while num >= v:res += k; num -= vreturn res
LeetCode 13. 罗马数字转整数(简单)
【题目描述】
罗马数字包含以下七种字符:I,V,X,L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如,罗马数字 2 写做 II,即为两个并列的 1。12 写做 XII,即为 X + II。27 写做 XXVII,即为 XX + V + II。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I可以放在V(5)和X(10)的左边,来表示 4 和 9。X可以放在L(50)和C(100)的左边,来表示 40 和 90。C可以放在D(500)和M(1000)的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。
【示例1】
输入: s = "III"
输出: 3
【示例2】
输入: s = "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
【示例3】
输入: s = "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
【提示】
1 ≤ s . l e n g t h ≤ 15 1\le s.length\le 15 1≤s.length≤15
s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况
IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX
【分析】
和上一题相似,先对罗马数字进行观察,发现除了4、40、400和9、90、900以外的其他罗马数字直接将每个字母转换成对应的整数相加即可。上面提到的这6个罗马数字他们的前一位数字比后一位数字更小,对其进行特判即可。
【Python代码】
class Solution:def romanToInt(self, s: str) -> int:dic = dict(M=1000, D=500, C=100, L=50, X=10, V=5, I=1)res = 0for i in range(len(s)):if i + 1 < len(s) and dic[s[i]] < dic[s[i + 1]]:res -= dic[s[i]]else:res += dic[s[i]]return res
相关文章:
LeetCode第11~15题解
CONTENTS LeetCode 11. 盛最多水的容器(中等)LeetCode 12. 整数转罗马数字(中等)LeetCode 13. 罗马数字转整数(简单) LeetCode 11. 盛最多水的容器(中等) 【题目描述】 给定一个长…...
如何编译打包OpenSSH 9.4并实现批量升级
1 介绍 openssh 9.4版本已于8月10号发布,安全团队又催着要赶紧升级环境里的ssh版本,本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。 https://w…...
AcWing 898. 数字三角形 (每日一题)
大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 注意 像数组下标出现i-1的,在循环的时候从i1开始。 关于0x3f3f3f3f和Integer.MAX_VALUE 0x3f3f3f3f:1061109567 Integer.MAX_VALUE:2147483647 在选用Integ…...
深度学习中,batchsize的大小对训练结果有什么影响,如何正确使用
一、影响: Batch size在深度学习训练中起着非常重要的作用,它对训练速度、模型性能、以及模型的泛化能力都有影响。以下是一些主要的影响: 训练速度:较大的batch size可以更充分地利用硬件并行性,从而加快单个epoch的…...
Squaretest 1.8.3 安装激活
1. 插件下载 2. 离线安装 3. 插件激活...
P21~22 第六章 储能元件——电容存储电场能,电感存储磁场能
1、电容元件 a定义 b线性时不变电容元件 c电容的电压与电流关系 i有限则u有限 注意理解面积 d电容的功率和储能 e例一 跃变就是指物体的物理量从有限值变为无限值的过程。 分析上图例题:对于电源波形要吃负无穷到正无穷去刻画。即时间轴要铺满。 有有图控制电…...
常见API架构介绍
常见API架构介绍 两个服务间进行接口调用,通过调用API的形式进行交互,这是常见CS架构实现的模式,客户端通过调用API即可使用服务端提供的服务。相较于SPI这种模式,就是服务端只规定服务接口,但具体实现交由第三方或者自…...
Vue全局组件与局部组件(详解)
当使用 Vue.js 构建应用时,组件是其核心概念之一。Vue 组件允许你将用户界面分割成独立、可复用的部分。这里我会更详细地解释 Vue 的全局组件和局部组件,包括它们的定义、使用方式以及适用场景。 Vue 全局组件: 全局组件是在整个 Vue 应用…...
对标 GPT-4?科大讯飞刘庆峰:华为GPU技术能力已与英伟达持平
科大讯飞创始人、董事长刘庆峰在亚布力中国企业家论坛第十九届夏季高峰会上透露了关于自家大模型进展的一些新内容。刘庆峰认为,中国在人工智能领域的算法并没有问题,但是算力方面似乎一直被英伟达所限制。 以往的“百模大战”中,训练大型模型…...
pytorch中torch.gather()简单理解
1.作用 从输入张量中按照指定维度进行索引采集操作,返回值是一个新的张量,形状与 index 张量相同,根据指定的索引从输入张量中采集对应的元素。 2.问题 该函数的主要问题主要在dim维度上,dim0 表示沿着第一个维度(行…...
计算机网络安全的背景
虽然传统的计算机发展和当今的电子商务不同,但是不可否认网络已经成 为非常重要的信息和数据互换交换的平台。但是随着网络不断发展渗透到人们的日 常生活、手机终端、交易支付等环节时,网络安全已经成为一个焦点和不可逾越的 发展鸿沟。尽管目前网上…...
Linux(实操篇一)
Linux实操篇 Linux(实操篇一)1. 常用基本命令1.1 帮助命令1.1.1 man获得帮助信息1.1.2 help获得shell内置命令的帮助信息1.1.3 常用快捷键 1.2 文件目录类1.2.1 pwd显示当前 工作目录的绝对路径1.2.2 ls列出目录的内容1.2.3 cd切换目录1.2.4 mkdir创建一个新的目录1.2.5 rmdir删…...
如何做一个学术裁缝
水刊:SCI四区,部分三区 顶刊、顶会要看,但是别看多了,知道好的东西长什么样就行了 去水刊,多去看水刊论文,能发现新大陆 一个论文需要多个数据集(两个),绝大多数水刊只用…...
微服务系统面经之二: 以秒杀系统为例
16 微服务与集群部署 16.1 一个微服务一般会采用集群部署吗? 对于一个微服务是否采用集群部署,这完全取决于具体的业务需求和系统规模。如果一个微服务的访问压力较大,或者需要提供高可用性,那么采用集群部署是一种常见的策略。…...
73 # 发布自己的 http-server 到 npm
1、添加 .npmignore 文件,忽略不需要的文件 public2、去官网https://www.npmjs.com/检查自己的包名是否被占用 3、切换到官方源,然后检查确认 nrm use npm nrm ls4、登录 npm 账号 npm login5、发布 npm publish6、查看发布情况,发布成功…...
接口经典题目
White graces:个人主页 🙉专栏推荐:《Java入门知识》🙉 🙉 内容推荐:继承与组合:代码复用的两种策略🙉 🐹今日诗词:人似秋鸿来有信,事如春梦了无痕。🐹 目录 &…...
2023-8-28 n-皇后问题
题目链接:n-皇后问题 第一种搜索顺序 #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool row[N], col[N], dg[N], udg[N];void dfs(int x, int y, int s) {if(y n) y 0, x ;if(x n){if(s n){for(int i 0; i < n;…...
基于Visual studio创建API项目
API(英文全称:Application Programming Interface,中文:应用程序编程接口) 为什么要 通过API接口可以与其他软件实现数据相互通信,API这项技术能够提高开发效率。 本文是基于vs2017 .net平台搭建API。希望可以帮助到学…...
leetcode做题笔记107. 二叉树的层序遍历 II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路一:递归调换顺序 int** levelOrderBottom(struct TreeNode* root, int* returnSize, i…...
cdq优化背包转移:GYM104531I
https://codeforces.com/gym/104531/problem/I 转化部分:关于 括号序列与问号 问题的一类处理方法 发现一个区间 [ i : j ] [i:j] [i:j] 合法要满足以下条件: 最后一个很好搞。前3个就是个cdq形式。 第一个拿来排序,后面对于黑白点分别以不…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
