Leetcode 4.21

1.罗马数字转整数

用unordered_map去存罗马数字对应的数值,分情况讨论,把所有情况都列出来即可

class Solution {
public:unordered_map<char, int> mp = {{'I', 1},{'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000}};int romanToInt(string s) {int n = s.length();int sum = 0;        for (int i = 0; i < n; i++) {if ((i + 1 < n) && ((s[i] == 'I' && (s[i + 1] == 'V' || s[i + 1] == 'X')) ||(s[i] == 'X' && (s[i + 1] == 'L' || s[i + 1] == 'C')) ||(s[i] == 'C' && (s[i + 1] == 'D' || s[i + 1] == 'M')))) {sum = sum + mp[s[i + 1]] - mp[s[i]];i++;} else {sum += mp[s[i]];}}return sum;}
};

2.整数转罗马数字

用vector<pair<int, string>>去存罗马数字symbol对应的数值val,如果val比num小,则num -= val; string ans + symbol
注意:
1.存储方式是vector<pair<int, string>> valueSymbols
2.遍历方式for (const auto &[value, symbol]: valueSymbols)

class Solution {
public:vector<pair<int, string>> valueSymbols = {{1000, "M"},{900,  "CM"},{500,  "D"},{400,  "CD"},{100,  "C"},{90,   "XC"},{50,   "L"},{40,   "XL"},{10,   "X"},{9,    "IX"},{5,    "V"},{4,    "IV"},{1,    "I"},};string intToRoman(int num) {string ans = "";for (const auto &[value, symbol]: valueSymbols) {while (num >= value) {num -= value;ans += symbol;}if (num == 0) {break;}}return ans;}
};

3.三数之和

遍历数组,target - nums[i], 按两数之和的方法求解。注意:答案中不可以包含重复的三元组。
需要注意的点:去重!!!!

左右指针相同去重
while (l < r && nums[r] == nums[r - 1]) r–;
起始位置相同去重
if (i > 0 && nums[i] == nums[i - 1]) continue;

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());vector<vector<int>> ans;int l = 0, r = nums.size() - 1, sum = 0;for (int i = 0; i < nums.size(); i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;int l = i + 1, r = nums.size() - 1;int target = - nums[i];while (l < r) {if (nums[l] + nums[r] < target) {l++;} else if (nums[l] + nums[r] > target) {r--;} else {ans.push_back({nums[i], nums[l], nums[r]});while (l < r && nums[l] == nums[l + 1]) l++;while (l < r && nums[r] == nums[r - 1]) r--;r--;l++;}}}return ans;}
};

4.四数之和

与题目3相同,注意题目:不重复的四元组!这个题可以遍历数组,固定一个元素,target - nums[i],就变成了3数之和的解法。

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(), nums.end());vector<vector<int>> ans;int target_tmp;for (int i = 0; i < nums.size() - 3; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;for (int j = i + 1; j < nums.size() - 2; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) continue;int l = j + 1, r = nums.size() - 1;target_tmp = target - nums[i] - nums[j];while (l < r) {if ((long)nums[l] + nums[r] < target_tmp) {l++;} else if ((long)nums[l] + nums[r] > target_tmp) {r--;} else {ans.push_back({nums[i], nums[j], nums[l], nums[r]});while (l < r && nums[l] == nums[l + 1]) l++;while (l < r && nums[r] == nums[r - 1]) r--;l++, r--;}}}}return ans;}
};

5.电话号码的字母组合

可以排列组合的题目都可以首先联想到全排列,递归时先判断是否符合递归终止条件,不符合则依次加当前电话号码位置对应的字母,加完后递归,

class Solution {
public:unordered_map<char, string> mp ={{'2', "abc"},{'3', "def"},{'4', "ghi"},{'5', "jkl"},{'6', "mno"},{'7', "pqrs"},{'8', "tuv"},{'9', "wxyz"}};vector<string> ans;string tmp;vector<string> letterCombinations(string digits) {if (digits.size() == 0) return ans;dfs(digits, mp, 0);return ans;}void dfs(string digits, unordered_map<char, string>& mp, int index) {if (tmp.size() == digits.size()) {ans.push_back(tmp);return;}for (auto ch : mp[digits[index]]) {tmp += ch;dfs(digits, mp, index + 1);tmp.pop_back();}}
};

6.有效的括号

碰到左括号入栈,右括号出栈看是否匹配

class Solution {
public:bool isValid(string s) {stack<char> valid;for (auto ch: s){if (ch == '(' || ch == '[' || ch == '{') {valid.push(ch);} else {if(valid.empty()) return false;auto left = valid.top();valid.pop();if ((ch == ')' && left != '(') || (ch == ']' && left != '[') || (ch == '}' && left != '{')) {return false;}}}return valid.empty() ? true : false;}
};

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

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

相关文章

Kubernetes TDengine 系列|安装 TDengine 的 Grafana 插件|Grafana监控TDengine数据

为了让Grafana 能够监控到TDengine 数据&#xff0c;快速集成搭建数据监测报警系统&#xff0c;所以直接安装TDengine 插件。 目录 一、安装 TDengine 的 Grafana 插件1、下载TDengine grafana插件2、解压到指定目录3、配置未签名插件 二、配置数据源&#xff0c;简单查询TDen…

【已解决】VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接:找不到该文件的错误

报错 在VMware上运行虚拟机时报错&#xff1a;VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接&#xff1a;找不到该文件的错误 原因分析 找不到这个iso文件了&#xff0c;检查文件位置 解决方案 找到iso文件&#xff0c;然后在VM中编辑虚拟机中这个文件的位置…

算法:堆(优先队列)

堆&#xff08;优先队列&#xff09;分为最大堆和最小堆。 python实现 class HEAPQ:# 最小堆def __init__(self, l):self.l lself.build()def build(self):n len(self.l)end n // 2for i in range(end, -1, -1):self.update(i)def update(self, i):l self.ln len(l)idx …

前端点击地图上的位置获取当前经纬度

地图封装组件 <template><div id"container"></div> </template> <script>import AMapLoader from amap/amap-jsapi-loader;export default {name: "Mapview",props:{mapinfo:{type:Object,default:function(){return {}}}…

AI-数学-高中-45函数单调性与导数

原作者视频&#xff1a;【导数】【一数辞典】5函数单调性与导数&#xff08;重要&#xff09;_哔哩哔哩_bilibili 导数最重要作用&#xff1a;判断函数单调性。 示例&#xff1a;

新风口下的必应bing国内广告投放该怎么做?

必应Bing作为全球搜索引擎市场的重要参与者&#xff0c;正逐渐显现出其在国内市场的独特价值和潜力。随着互联网生态的多元化发展&#xff0c;必应Bing凭借其高质量用户群和精准投放能力&#xff0c;成为了企业寻求新增长点的新风口。 一、洞察先机&#xff0c;精准定位市场 …

运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

简述 一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预…

python绘制等高线图

在Python中&#xff0c;可以使用matplotlib和numpy库来绘制等高线图&#xff08;contour plot&#xff09;。等高线图通常用于显示三维数据的二维投影&#xff0c;其中颜色或线条的密度表示第三维的值。 以下是一个简单的示例&#xff0c;说明如何使用这些库来创建等高线图&am…

欧姆龙FZ5-L355维修工业视觉系统主机电脑主板Omron FZ5 L355深圳捷达工控维修

工业计算机&#xff1a;坚固耐用&#xff0c;为机器视觉做好准备 由于其重要性和及时性&#xff0c;质量控制已被确定为生产的主要瓶颈之一。借助机器视觉&#xff0c;物联网设备和机器视觉系统协同工作&#xff0c;以超人的准确性和速度实现质量控制流程自动化。然而&#xf…

Recat学习

1&#xff0c;创建 项目搭建 npm config set registry http://registry.npm.taobao.org/ // 安装yarn npm install -g yarn // 安装cnpm npm install -g cnpm -registryhttps://registry.npm.taobao.org //设置国内源 yarn config set registry https://registry.npm.taobao.o…

租用新加坡服务器部署wordpress如何加速?

要加速在新加坡服务器上部署WordPress&#xff0c;可以采取以下一些措施&#xff1a; 1. 选择性能优越的主机提供商&#xff1a;选择具有优质硬件、高性能网络和优化服务器配置的主机提供商。确保服务器的硬件资源充足&#xff0c;网络连接稳定&#xff0c;以提高WordPress网站…

常用的JDK9-JDK17的一些新增语法特性

目录 1.前言2.一些新增的特性2.1 yield关键字2.2 var关键字2.3 空指针异常2.4 密封类2.5 接口中的私有方法2.6 instanceof2.7 其他 1.前言 从springboot3.0开始&#xff0c;已经不⽀持JDK8了。参考资料 &#xff1a;Spring官方博客。从3.0开始&#xff0c;转变为JDK17。 官方…

Node+Vue3+mysql+ant design实现前后端分离——表格的添加、修改和删除

在上一篇文章中,我们分享了如何运用NodeJS、Vue、MySQL以及其他技术来实现后台管理系统中的表格查询功能。今天,我们将继续探讨另外三个重要的功能实现原则。这些原则在构建后台管理系统时至关重要,同时还有导入和导出这两种功能也必不可少。关于导入和导出功能,我们会在下…

2024.4月最新的高额度Hostinger优惠券、优惠代码、优惠链接

优惠链接&#xff1a;https://hostinger.com?REFERRALCODE1RAY132 以上优惠链接最低可获取30%折扣&#xff0c;以Cloud Startup版本为例&#xff0c;四年期直接购买价格为480 &#xff0c;使用以上优惠链接购买价为 380 &#xff0c;使用以上优惠链接购买价为380 &#xff0c…

CUDA的开发框架

CUDA的开发框架主要提供了一系列工具和库&#xff0c;使得开发者可以充分利用NVIDIA GPU进行高效的并行计算。以下是CUDA开发框架的一些关键组成部分。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.CUDA核心库&#xff1a;这些是构…

C++设计模式:中介者模式(十五)

1、定义与动机 定义&#xff1a;用一个中介对象来封装&#xff08;封装变化&#xff09;一系列的对象交互。中介者使各个对象不需要显示的相互引用&#xff08;编译时依赖 -> 运行时依赖&#xff09;&#xff0c;从而使其耦合松散&#xff08;管理变化&#xff09;&#xff…

vue3+node.js+mysql+ant design实现表格的查询功能

今日主要分享如何运用vue、nodejs、mysql及ant design构建表格数据查询功能&#xff0c;这也是众多项目开发者关注的问题。最关键在于前端与后端的协作&#xff0c;后端数据则通过nodejs编写。尽管涉及多项技术&#xff0c;看似复杂&#xff0c;但实际操作却并非困难。当然&…

企业如何建立网络事件应急响应团队?

企业如何建立网络事件应急响应团队&#xff1f; 一、应急响应中每一秒都很重要二、选择外包服务还是建立自己的网络安全应急响应团队&#xff1f;三、您的应急响应团队需要谁&#xff1f;1. 应急响应小组2. 技术支持和监控团队 四、应急响应小组1. 安全分析工程师 – 具有网络、…

Selenium 使用指南

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Selenium是网页应用中最流行的自动化测试工具&#xff0c;可以用…

LM324的输出VOL与IOL你注意过吗?

电路图 途中LMC6084 更改为LM324 故障现象 这个电路的输入输出表达式为 R30 两端电压等于0V 当J16 的4脚与2脚相等&#xff0c;等于5V&#xff08;或者4脚略大于2脚时&#xff09;7脚输出 约 500mV&#xff1b; 实际应该为0V左右才对.见下图 故障原因 上图运放输出低电平…