力扣面试150(19/150)

7.7 12. 整数转罗马数字

七个不同的符号代表罗马数字,其值如下:

符号
I1
V5
X10
L50
C100
D500
M1000

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:

  • 如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。
  • 如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。
  • 只有 10 的次方(I, X, C, M)最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果需要将符号附加4次,请使用 减法形式

给定一个整数,将其转换为罗马数字。

我的思路:在看到“最大值”的时候,心里面就在想能不能使用贪心,最大的->贪心,每次找最大的

数字排列:1000 900 500 400 100 90 50 40 10 9 5 4 1

试了一下案例发现是可以的

循环数字排列,让num/数字为res,如果是=0的话就下一个循环数字,如果是>0的话,就要减去res*数字,添加罗马数字到ans,罗马数字和数字的映射也是map,循环一直到num<=0为止。

有几个错误点:

num/数字为res:生成的是浮点数,使用向下取整得到数字

加罗马数字到ans:我循环的时候添加的下表有问题

我的代码:

function intToRoman(num: number): string {let ans = '';
let RomanMap = new Map([[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']
]);const choseNum = [ 1000 ,900, 500, 400, 100, 90, 50 ,40 ,10, 9, 5, 4, 1,  ]for(let i = 0; i < choseNum.length ; i++){let res =Math.floor( num / choseNum[i]);//使用向下取整console.log(res);;if(res != 0){// 能够有数字num -= res * choseNum[i];console.log(num);for(let j = 0 ; j < res ; j++){ans += RomanMap.get(choseNum[i]);//下标是i}}if(num === 0){return ans;}}return ans;
};

总结:本题目在上一个题目上有所提升,很高兴的是我看到了最大值就想到了贪心算法,耶耶耶继续加油!

7.7 .58. 最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

我的思路:

前后去掉空格

最后一个单词,直接从最后开始,如果遇到空格就直接返回count

但是有一个特例,就是类似于’day’这种,它是没有空格的,那么我们就设置一个指针在最前面

如果说i等于j了就直接返回count

我的代码:

function lengthOfLastWord(s: string): number {// 先把前后的空格去掉let newStr = s.trim();// 最后一个单词,直接从最后开始let i = newStr.length - 1;// 第一个单词let j = 0;let count = 0;while(newStr[i] !== ' '){count ++;if(i === j){return count;}i--;}return count;
}

总结:这道题目是简单题,做出来了还是蛮开心的嘻嘻

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

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

相关文章

数据结构与算法——从递归入手一维动态规划【1】

前言&#xff1a; 简单记录对左程云系列算法课程--算法讲解066【必备】的学习&#xff0c;这是第一篇。主要提供C代码和一些简单的个人理解&#xff0c;如需要细致讲解请移步原视频。 涉及内容&#xff1a; 斐波那契数列、动态规划 参考视频&#xff1a; 左程云--算法讲解…

搭建个人博客系列--Nacos 注册中心

基础项目已完成&#xff0c;接下来就是SpringCloud的各种组件了。 那你又要问&#xff1a;既然有Nacos为什么之前还装了Apollo&#xff1f; 那你别管&#xff0c;那不得什么都会点&#xff0c;不然怎么找工作。干就完了。 一、安装Nacos 管他三七二十一&#xff0c;先在doc…

前端实习总结——案例与大纲

以下是一个结合真实场景的前端面试案例&#xff0c;包含面试流程、核心问题、候选人回答思路及面试官考察点&#xff0c;可直观感受如何在面试中展现实习/项目经历&#xff1a; 案例背景 候选人&#xff1a;应届生&#xff0c;有6个月前端实习经历&#xff0c;参与过“企业内部…

Web前端开发: :where(伪类函数选择器)

:where(伪类函数选择器)&#xff1a;:where() 是 CSS Selectors Level 4 规范中引入的一个强大的伪类函数选择器&#xff0c;它允许开发者以简洁的方式编写复杂的选择器&#xff0c;同时具有独特的优先级特性。核心概念&#xff1a;:where() 伪类函数选择器与 :is() 非常相似&a…

EfficientVMamba: Atrous Selective Scan for Light Weight Visual Mamba论文精读(逐段解析)

EfficientVMamba: Atrous Selective Scan for Light Weight Visual Mamba论文精读&#xff08;逐段解析&#xff09; 论文地址&#xff1a;https://arxiv.org/abs/2403.09977 CVPR 2024 Abstract. Prior efforts in light-weight model development mainly centered on CNN an…

Integer缓冲区

文章目录常见面试题&#xff1a;总结Integer缓冲区是Java预先创建的一个固定范围的Integer对象缓存池&#xff08;默认-128到127&#xff09;&#xff0c;用于自动复用频繁使用的整数值&#xff0c;减少内存开销和对象创建。当通过自动装箱或Integer.valueOf()生成该范围内的整…

[国家电网备考]计算机网络

计算机网络的概述 概念: 用通信设备与线路将地理位置不同,功能独立的计算机系统互连起来,以功能完善的网络软件实现网络中资源共享和信息传递的系统 自治计算机: 能够自我管理,配置,维护的计算机(目前我们使用的电脑) 以前的终端只有显示器,不能叫做自治计算机 计算机网络向用户…

在 Linux(openEuler 24.03 LTS-SP1)上安装 Kubernetes + KubeSphere 的防火墙放行全攻略

目录 在 Linux&#xff08;openEuler 24.03 LTS-SP1&#xff09;上安装 Kubernetes KubeSphere 的防火墙放行全攻略 一、为什么要先搞定防火墙&#xff1f; 二、目标环境 三、需放行的端口和协议列表 四、核心工具说明 1. 修正后的 exec.sh 脚本&#xff08;支持管道/重…

HTTP 响应头信息详解

HTTP 响应头信息详解 引言 HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一。在HTTP协议中,响应头信息是服务器向客户端发送的重要信息之一。响应头信息包含了关于响应的元数据,如状态码、内容类型、缓存策略等。本文将详细介绍HTTP响应头信息的概念、类型、作…

去掉长按遥控器power键后提示关机、飞行模式的弹窗

首先找到对应长短按power键的位置&#xff1a;frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.javaprivate final Runnable mPowerLongPress new Runnable() {Overridepublic void run() {// The context isnt readif (mLongPressOnPowerBe…

Redis-哨兵机制Sentinel

redis的主从复制模式下,一旦主节点出现了故障无法提供服务了,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于有了一定规模的应用来说,这种方案的延迟是无法接受的,于是redis2.8提供了Redis-Sentinel(哨兵)来解决这个问题. 目录 1.啥是哨兵节点: 2.r…

SQL 视图

SQL 视图 引言 SQL 视图是数据库管理系统中的一种重要概念,它允许用户以不同的方式查看数据库中的数据。本文将详细介绍 SQL 视图的概念、作用、创建方法以及在实际应用中的注意事项。 一、SQL 视图的概念 SQL 视图是数据库中的一种虚拟表,它并不存储实际的数据,而是基于…

ESP32-使用VSCODE 各种问题总结汇总

1 问题 1 1.1 具体问题描述-config:idf.customExtraPath 无法正确描述launch.json 中使用了一个变量&#xff1a; ${config:idf.customExtraPaths}但在 VSCode 的设置中&#xff0c;并没有找到对应的设置项 idf.customExtraPaths&#xff0c;所以无法解析。 1.2 问题解决 1.2.1…

【剪裁Patch】已标注的WSI剪裁Patch的处理流程(以QuPath软件得到的标注信息为例)

1. 整体处理思路 整体处理流程如图所示,概括来说就是:根据标注信息将WSI区分为肿瘤区域和正常区域,对这个区域进行采样裁剪得到具有Patch级别标签的Patch。 当然,这里的Patch标签是根据标注信息决定的,如果标注的是癌症亚型信息,那么也可以将不同亚型的Patch区分出来。 …

Qt 与Halcon联合开发九:算法类设计与实现讲解(附源码)

一、设计背景 在机器视觉系统中&#xff0c;算法是系统的核心。不同产品、不同项目对图像处理的要求不尽相同&#xff0c;因此算法需要具备&#xff1a; 灵活拓展&#xff1a;方便添加新算法统一调用&#xff1a;界面或上层逻辑不关心算法细节结构清晰&#xff1a;便于维护与…

npu-driver 23.0.3驱动安装

宿主机器上安装npu-driver/ npu-firmware这两个东西 wget -O Ascend-hdk-910b-npu-driver_23.0.3_linux-aarch64.run https://bj.bcebos.com/v1/aipe-easyedge-public/cann/eb_speed/Ascend-hdk-910b-npu-driver_23.0.3_linux-aarch64.run?authorizationbce-auth-v1%2F50c8bb…

LeetCode题解---<三数之和>

文章目录题目<三数之和>--Python解法题解题目<三数之和>–Python解法 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为…

探索Insplorion氢气传感器:高灵敏度与快速响应的创新解决方案

在追求更清洁、更安全能源的过程中&#xff0c;氢气作为一种理想的清洁能源载体&#xff0c;正日益受到全球的重视。然而&#xff0c;氢气的广泛应用也带来了新的挑战——如何确保其储存、运输和使用的安全性&#xff1f;Insplorion通过其独特的纳米等离子体传感&#xff08;NP…

【QT】事件(鼠标、按键、定时器、窗口)

文章目录1. 事件1.1 事件的介绍1.2 事件的处理2. 按键事件3. 鼠标事件4. 定时器5. 窗口事件1. 事件 1.1 事件的介绍 事件是应用程序内部或者外部产生的事情或者动作的统称。 在 Qt 中使用⼀个对象来表示⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt …

STM32固件升级设计——串口IAP升级(基于YMODEM协议)

目录 一、功能描述 1、BootLoader部分&#xff1a; 2、APP部分&#xff1a; 二、BootLoader程序制作 1、分区定义 2、 主函数 3、YMODEM协议的实现 4、程序跳转 三、APP程序制作 四、工程配置&#xff08;默认KEIL5&#xff09; 五、运行测试 结束语 概述 IAP&…