【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 题目

罗马数字转整数

罗马数字包含以下七种字符: IVXLCDM。字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 112 写做 XII ,即为 X + II27 写做  XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:I 可以放在 V (5)X (10) 的左边,来表示 49X 可以放在 L (50)C (100) 的左边,来表示 4090C 可以放在 D (500)M (1000) 的左边,来表示 400900。
给定一个罗马数字,将其转换成整数。示例 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] 内
题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
ILIM 这样的例子并不符合题目要求,49 应该写作 XLIX999 应该写作 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题)完成,后续会持续调整;查阅过程中若遇到问题欢迎留言或私信交流。

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

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

相关文章

聊聊看番的经历

我本来是不看番的。 直到高一上的一个周末&#xff0c;在 Polaris 的强烈推荐下&#xff0c;我看了《Lycoris》&#xff0c;一个美少女战斗番。故事的情节比较简单&#xff0c;并且只有13集&#xff0c;我两个周末就看完了&#xff0c;最后是大团圆结局&#xff0c;非常开心。 …

Debezium日常分享系列之:Debezium 2.4.1.Final发布

Debezium日常分享系列之&#xff1a;Debezium 2.4.1.Final发布 一、Debezium Operator - 指定镜像拉取秘密二、Debezium Operator - 指定容器资源三、Debezium Operator 指标端点改进 从最新的 Debezium 2.5 开发系列中向后移植了一些新功能。所有这些新功能都集中在 Kubernete…

QQ空间上传一次 500张限制突破记录

手机又好多照片了&#xff0c;用手机上传耽误时间&#xff0c;就导出到电脑了&#xff0c;上传到qq空间去。 结果发现不开通黄钻无法上传原图&#xff0c;那就开通吧&#xff01; 开通了黄钻&#xff0c;居然不能一次上传超过 500 张&#xff0c;开通有何用&#xff1f; 五千…

电磁场信息论及先进MIMO (黄大年茶思屋座谈) 笔记

天线阵的负载动态调控&#xff0c;动态阻抗匹配网络&#xff0c;实时跟着扫描角度的变化而变化&#xff0c;可能突破Hannan极限。 新的天线构架&#xff1a; 周期 —》非周期 每个单元不一样 动态可调&#xff0c;可重构 每个天线多端口或多模式 多层天线 非周期结构天线的增…

vscode导入STM32CubeIDE工程文件夹未定义警告清除方法

0 前言 在我们使用vscode去编辑STM32CubeIDE的工程文件时&#xff0c;经常会出现一些类型未定义、头文件路径无效的问题&#xff0c;无法正常使用且非常影响观感。本文介绍如何设置vscode导入的STM32CubeIDE配置文件&#xff0c;解决这一问题。 1 vscode导入STM32CubeIDE工程…

从0到0.01入门 Webpack| 003.精选 Webpack面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

rocky8.9配置K8S集群kubernetes,centos同理

rocky8.9配置K8S集群 节点主机名IP地址mastertang1192.168.211.101node1tang2192.168.211.102node2tang3192.168.211.103 1&#xff09;准备工作 全部主机都配置静态ip vi /etc/sysconfig/network-scriptsTYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DE…

【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析模拟实现

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

Docker Remote API 使用详解

文章目录 1.容器相关1.1 列出所有容器1.2 创建新容器1.3 检查容器1.4 启动容器1.5 停止容器1.6 重启容器1.8 删除容器1.14 根据资源使用情况获取容器统计信息1.16 获取容器日志 2.镜像相关2.1 获取镜像清单2.2 构建镜像2.4 检查镜像2.5 获取镜像的历史记录2.6 标记一个镜像2.8 …

java学习part11继承

1.类的继承 继承为了让类之间建立联系&#xff0c;同时复用代码。 子类和父类的同名函数构成重写&#xff0c;能覆盖&#xff0c;除非用super.xx()调。 同名属性不会覆盖&#xff0c;而是并存&#xff0c;用super.xx调。 2.子类初始化 子类会自动调用父类无参构造super() 3.重…

辅助驾驶功能开发-功能规范篇-XPeng-NGP高速自主导航驾驶功能

1.概述 本文档明确对 NGP 的定义及设计要求,将作为自主开发的设计指导文 件。 2.功能定义 根据应用场景将横向控制功能分为两类,非高速公路和高速公路功能。在非高速公路场景中,主要由LCC/TJA/ALC来解决各类细化场景,在高速场景中,NGP来解决细化场景。(本文中高速公路…

如何把自己银行卡里的钱转账充值到自己支付宝上?

原文来源&#xff1a;https://www.caochai.com/article-4524.html 支付宝余额是支付宝核心功能之一&#xff0c;主要用于网购支付、线下支付、转账等场景。用户可以将银行卡、余额宝等资金转入或转出至支付宝余额&#xff0c;实现快速转账和支付。 如何把自己银行卡里的钱转账…

PyCharm 安装插件Vue

一、打开PyCharm工具 File -> Settings -> Plugins 二、在项目中添加Vue.js的依赖项。 npm install vue 三、页面应用

基于51单片机的百叶窗控制系统设计

**单片机设计介绍&#xff0c; 基于51单片机的百叶窗控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的百叶窗控制系统设计可以分为硬件设计和软件设计两个方面。下面是一个简要的设计介绍&#xff1a; …

【微服务专题】SpringBoot自动配置简单源码解析

目录 前言阅读对象阅读导航前置知识什么是自动配置0.1 基本概念0.2 SpringBoot中的【约定大于配置】0.3 从SpringMVC看【约定大于配置】0.4 从Redis看【约定大于配置】0.5 小结 笔记正文一、EnableAutoConfiguration源码解析二、SpringBoot常用条件注解源码解析2.1 自定义条件注…

WordPress插件开发教程手册 — 钩子(Hooks)

钩子是用一段代码添加/修改另外一段代码的方式&#xff0c;是 WordPress插件和主题与 WordPress 内核交互的基础&#xff0c;钩子在 WordPress 内核中也被广泛使用。WordPress 中有两种钩子&#xff0c;Action 和 Filter。使用钩子时&#xff0c;我们需要先编写一个自定义函数作…

我的创作纪念日第256天

机缘 时间过得好快啊&#xff0c;没想过一眨眼博客写了已经快一年了&#xff0c;这俩月其实写的挺少的&#xff0c;因为一方面是上了项目&#xff0c;一方面要备考研究生考试&#xff0c;所以很难权衡自己的时间和精力。 收获 写博客对我来说&#xff0c;提升能力是一方面&am…

Python爬虫图片及相关知识讲解

1. 导入所需依赖 pip install requests # 导入request库&#xff0c;用于发起网络请求re # python自带&#xff0c;不需要导入&#xff0c;正则表达式库&#xff0c;用于匹配规则 os # 系统库&#xff0c;用于操作文件夹、文件2. requests库介绍 以下是 requests 库的…

HCIP-七、IS-IS 综合实验

七、IS-IS 综合实验 实验拓扑实验需求及解法1.如图所示&#xff0c;配置所有路由器的接口IP地址。2.运行IS-IS&#xff0c;进程号13.IS-IS优化4.路径优化 实验拓扑 实验需求及解法 本实验模拟IS-IS综合网络&#xff0c;完成以下需求&#xff1a; 1.如图所示&#xff0c;配置所…

指针的使用和传址调用

1.引入 学习指针的⽬的是使⽤指针解决问题&#xff0c;那什么问题&#xff0c;⾮指针不可呢&#xff1f; 例如&#xff1a;写⼀个函数&#xff0c;交换两个整型变量的值。 ⼀番思考后&#xff0c;我们可能写出这样的代码&#xff1a; #include <stdio.h> void Swap1(int…