【LeetCode】挑战100天 Day15(热题+面试经典150题)
【LeetCode】挑战100天 Day15(热题+面试经典150题)
- 一、LeetCode介绍
- 二、LeetCode 热题 HOT 100-17
- 2.1 题目
- 2.2 题解
- 三、面试经典 150 题-17
- 3.1 题目
- 3.2 题解
一、LeetCode介绍

LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序员、计算机科学专业学生和技术爱好者等人群,旨在帮助他们提高算法和编程技能。LeetCode上的问题通常来自各种技术公司的面试题目,因此它也是程序员面试准备的重要资源之一。
LeetCode上的问题涵盖了各种难度级别,从入门级到专家级都有不同难度的题目可供练习。用户可以选择使用不同的编程语言提交答案,LeetCode能够对结果进行评估并返回测试结果。
除了题目外,LeetCode还提供了讨论区、排行榜等社区功能,用户可以在这里交流学习心得、解决疑难问题,并与其他用户比较自己的做题成绩。
挑战100天 AI In LeetCode是基于LeetCode题库,借助AI的能力进行解题、并学习其解题过程。
二、LeetCode 热题 HOT 100-17
2.1 题目
** 电话号码的字母组合**
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:输入:digits = ""
输出:[]
示例 3:输入:digits = "2"
输出:["a","b","c"]提示:0 <= digits.length <= 4
digits[i] 是范围 ['2', '9'] 的一个数字。

2.2 题解
解题思路:
这道题可以使用回溯算法来求解,回溯算法是一种通过穷举所有可能的情况来找到所有解的算法。
首先,我们可以创建一个映射表来存储每个数字对应的字母集合。然后,定义一个递归函数,该函数接受两个参数:当前的组合字符串和剩余的数字字符串。
在递归函数中,我们首先判断剩余的数字字符串是否为空,如果为空,则将当前的组合字符串加入结果列表中。否则,取出剩余数字串的第一个字符,并找到对应的字母集合。然后,遍历该字母集合,将每个字母与当前的组合字符串拼接,得到新的组合字符串,并将剩余数字串的子串和新的组合字符串作为参数递归调用自身。
最后,我们需要在主函数中调用递归函数,并返回结果列表。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Solution {public List<String> letterCombinations(String digits) {List<String> res = new ArrayList<>();if (digits == null || digits.length() == 0) {return res;}Map<Character, String> map = new HashMap<>();map.put('2', "abc");map.put('3', "def");map.put('4', "ghi");map.put('5', "jkl");map.put('6', "mno");map.put('7', "pqrs");map.put('8', "tuv");map.put('9', "wxyz");backtrack(res, "", digits, map, 0);return res;}private void backtrack(List<String> res, String combination, String digits, Map<Character, String> map, int index) {if (index == digits.length()) {res.add(combination);return;}char digit = digits.charAt(index);String letters = map.get(digit);for (int i = 0; i < letters.length(); i++) {String letter = String.valueOf(letters.charAt(i));backtrack(res, combination + letter, digits, map, index + 1);}}
}

三、面试经典 150 题-17
数组 / 字符串
3.1 题目
罗马数字转整数
罗马数字包含以下七种字符: 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 = "IV"
输出: 4
示例 3:输入: s = "IX"
输出: 9
示例 4:输入: s = "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:输入: s = "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.提示:1 <= s.length <= 15
s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。
3.2 题解
解题思路:
根据题目描述,我们可以发现罗马数字转整数的规律为:对于每一位上的罗马数字,如果该位对应的数比下一位对应的数小,则将该位对应的数减去;否则,将该位对应的数加上。例如,对于罗马数字"IV",第一位"V"比第二位"I"大,所以结果为5-1=4。
因此,我们可以从左到右遍历罗马数字字符串,用一个变量记录当前已经遍历过的所有数字代表的整数之和,并根据当前数字与下一位数字的大小关系,决定是加上还是减去当前数字代表的整数。
public class Solution {public int romanToInt(String s) {Map<Character, Integer> map = new HashMap<>();map.put('I', 1);map.put('V', 5);map.put('X', 10);map.put('L', 50);map.put('C', 100);map.put('D', 500);map.put('M', 1000);int result = 0;for (int i = 0; i < s.length(); i++) {int currentNum = map.get(s.charAt(i));if (i < s.length() - 1 && currentNum < map.get(s.charAt(i+1))) {result -= currentNum;} else {result += currentNum;}}return result;}
}

至此,挑战100天 AI In LeetCode Day015(热题+面试经典150题)完成,后续会持续调整;查阅过程中若遇到问题欢迎留言或私信交流。
相关文章:
【LeetCode】挑战100天 Day15(热题+面试经典150题)
【LeetCode】挑战100天 Day15(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-172.1 题目2.2 题解 三、面试经典 150 题-173.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...
面试:RabbitMQ相关问题
文章目录 简单介绍RabbitMQRabbitMQ架构什么是 RabbitMQ?有什么显著的特点?RabbitMQ 有那些基本概念?RabbitMQ routing 路由模式消息怎么路由?RabbitMQ publish/subscribe 发布订阅(共享资源)能够在地理上分开的不同数据中心使用 …...
SpringMVC系列-7 @CrossOrigin注解与跨域问题
背景 前段时间帮同事分析了一个跨域问题,正好系统分析和整理一下。 1.跨域 理解同源策略是理解跨域的前提。同源策略定义如下: 在同一来源的页面和脚本之间进行数据交互时,浏览器会默认允许操作,而不会造成跨站脚本攻击&#x…...
[RK-Linux] misc分区详解
misc 其实是英文 miscellaneous 的前四个字母,杂项、混合体、大杂烩的意思。 misc 分区的概念来源于 Android 系统,Linux 系统中常用来作为系统升级时或者恢复出厂设置时使用。 misc 分区的读写:misc 分区在以下情况下会被读写。 Uboot:设备加电启动时,首先启动 Uboot,…...
用户与组管理:如何在服务器系统中管理用户和权限
你是否想过,当你登录到一个服务器系统时,你是如何被识别和授权的?你是否知道,你可以通过创建和管理用户和组来简化和优化你的系统管理工作?你是否想了解一些常用的用户和组管理命令和技巧?如果你的答案是肯…...
【负载均衡】这些内容你需要知道下
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…...
深入理解 Django 中的事务管理
概要 在数据库操作中,事务是确保数据完整性和一致性的关键机制。Django 作为一个强大的 Python Web 框架,提供了灵活而强大的事务管理功能。理解和正确使用 Django 中的事务对于开发高质量的 Web 应用至关重要。本文将深入探讨 Django 的事务管理机制&a…...
springsecurity6配置一
springsecurity6默认的过滤器是UsernamePasswordAuthenticationToken。具体操作步骤如下: 一、定义一个实体实现springsecurity的UserDetails接口 package com.school.information.core.security.entity;import com.alibaba.fastjson.annotation.JSONField; import com.scho…...
四边形不等式优化DP
目录 四边形不等式内容[HNOI2008]玩具装箱解析代码实现 参考资料 四边形不等式内容 TODO [HNOI2008]玩具装箱 解析 满足四边形不等式,决策具有单调性. 对于两个位置 i , j i, j i,j, 对应的最优决策点一定有 o p t [ i ] < o p t [ j ] opt[i] < opt[j]…...
Gin 学习笔记01-数据返回
Gin 数据返回 1、返回 string 和 json2、返回 xml 和 ymal3、返回html4、重定向 1、返回 string 和 json c.String()c.JSON() package mainimport ("github.com/gin-gonic/gin""net/http" )func getJSON(c *gin.Context) {//c.String(http.StatusOK, &qu…...
【AI考证笔记】NO.1人工智能的基础概念
目录 一、什么是智能 1.什么是智能 2.智能的种类 二、什么是人工智能 1.人工智能之父——图灵 2.人工智能的定义 三、人工智能的发展阶段 四、哪些工作要被淘汰掉? 以下部分内容来自于百度智能云人才认证培训讲义,腾讯等也有人工智能类似的讲义&…...
【Exception】npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
Talk is cheap, show me the code. 环境 | Environment kversionOSwindows 11nodev18.14.2npm9.5.0 报错日志 | Error log >npm create vitelatest Need to install the following packages:create-vite5.0.0 Ok to proceed? (y) y npm ERR! code UNABLE_TO_GET_ISSUER_…...
持续集成交付CICD:GitLabCI 通过trigger触发流水线
目录 一、理论 1.GitLabCI 二、实验 1.搭建共享库项目 2.GitLabCI 通过trigger触发流水线 三、问题 1.项目app02未触发项目app01 2.GitLab 报502网关错误 一、理论 1.GitLabCI (1) 概念 GitLab CI(Continuous Integration)是一种持续集成工具…...
Java 多线程中的sleep()和wait()方法的区别
Java 多线程中的sleep()和wait()方法的区别 1、相同点 sleep()和wait()都可以暂停线程的执行。 2、不同点 所在类不同 sleep()是Thread类的静态方法。 wait()是Object类的方法。 锁释放不同 sleep()是不释放锁的。 wait()是释放锁的。 用途不同 sleep()常用于一定时间内暂停…...
车载以太网-数据链路层-VLAN
文章目录 车载以太网VLAN(Vehicle Ethernet VLAN)车载以太网VLAN帧格式VLAN帧报文VLAN帧报文示例车载以太网VLAN(Vehicle Ethernet VLAN) 车载以太网VLAN(Vehicle Ethernet VLAN)是一种在车辆网络中使用的虚拟局域网技术。它允许在车载以太网网络中创建多个逻辑网络,从…...
【Vue】filter的用法
上一篇: vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5502 本篇所使用指令 v-for v-on v-html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…...
python web项目导包规范
python web项目导包规范 python 内置的模块通过第三方库安装的模块框架自身提供的模块用户自己定义的模块 如: from __future__ import absolute_import, unicode_literalsfrom debug_toolbar.panels import Panelfrom django.utils.translation import ugettext_…...
AtCoder Beginner Contest 330 题解
目录 A - Counting PassesB - Minimize Abs 1C - Minimize Abs 2D - Counting LsE - Mex and Update A - Counting Passes 原题链接 题目描述 给定N个数和一个整数L,输出大于等于L的数的个数。 public static void solve() throws IOException{int n readInt(), m…...
论文速读《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》
概括主要内容 文章《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》提出了两种创新技术,以改善多模态3D检测模型的性能,通过更有效地融合相机和激光雷达传感器数据来提高对象检测的准确性,尤其是在行人检测方面…...
关于前端处理后端轮询的操作 (总结)
使用场景:前端首次发起请求获取数据,若失败则每隔1s发起一次知道成功获取数据为止解决方案: 使用轮询操作,涉及定时器的使用和关闭 (使用vue2代码为例) data() {return {pollingResult_en: null, // 处理轮询结果bizI…...
量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据
量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据 刚拿到网易金融导出的股票CSV数据时,很多人会直接扔进分析工具——直到发现中文列名报错、日期格式混乱、停牌日数据缺失等问题才手忙脚乱。作为量化分析的真正起点,数据清洗…...
HFSS脚本语法避坑指南:从‘属性包’到报告导出,新手最常踩的5个雷
HFSS脚本语法避坑指南:从属性包到报告导出的5个关键陷阱 第一次打开HFSS脚本编辑器时,那种既兴奋又忐忑的心情我至今记忆犹新。作为一个从GUI操作转向脚本自动化的工程师,我原以为掌握了Python就能轻松驾驭HFSS脚本,结果却被Iron…...
华硕笔记本性能控制新选择:G-Helper完全使用指南
华硕笔记本性能控制新选择:G-Helper完全使用指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, a…...
ABAP2XLSX企业级Excel生成技术选型指南:5大优势与架构深度解析
ABAP2XLSX企业级Excel生成技术选型指南:5大优势与架构深度解析 【免费下载链接】abap2xlsx Generate your professional Excel spreadsheet from ABAP 项目地址: https://gitcode.com/gh_mirrors/ab/abap2xlsx 一、技术价值定位:为什么选择ABAP2X…...
Snipe-IT企业级资产管理系统:从混乱到有序的数字化转型路径
Snipe-IT企业级资产管理系统:从混乱到有序的数字化转型路径 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 面对IT资产管理的混乱局面,企业往往陷…...
深度解析LinkSwift:重新定义网盘直链下载体验的技术创新方案
深度解析LinkSwift:重新定义网盘直链下载体验的技术创新方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...
从蓝牙到UWB:手把手拆解CCC R3标准如何实现车辆‘厘米级’安全定位
从蓝牙到UWB:手把手拆解CCC R3标准如何实现车辆‘厘米级’安全定位 当你的手机靠近车门时,车辆自动解锁;坐进驾驶舱的瞬间,引擎悄然启动——这种科幻电影般的体验,正通过CCC R3标准中的UWB定位技术走进现实。与传统方…...
告别BasicTeX的烦恼:我在M1 Mac上迁移到原生ARM版MacTeX的真实体验与避坑指南
告别BasicTeX的烦恼:我在M1 Mac上迁移到原生ARM版MacTeX的真实体验与避坑指南 第一次在M1 MacBook Air上安装BasicTeX时,我以为找到了轻量高效的LaTeX解决方案。直到连续三天被各种缺失宏包和权限问题折磨到凌晨两点,才意识到自己掉进了&quo…...
PVE里Windows Server卡成PPT?别急着换硬件,先检查这两个虚拟设备
PVE环境下Windows Server性能优化实战:从卡顿到流畅的关键策略 如果你在PVE虚拟化平台上运行Windows Server时遭遇了令人抓狂的卡顿——远程桌面像翻PPT一样迟缓,系统响应慢得让人怀疑人生,甚至怀疑是不是该升级硬件了。别急着下单买新设备&…...
玩转CloudCompare点云着色:手把手教你配置Scalar Field,让强度、高程数据一目了然
玩转CloudCompare点云着色:手把手教你配置Scalar Field,让强度、高程数据一目了然 点云数据的可视化是三维重建、地形测绘、逆向工程等领域的关键环节。当面对包含多维属性(如强度、高程、法向量)的激光雷达扫描数据时,…...
