每日5题Day3 - LeetCode 11 - 15

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:11. 盛最多水的容器 - 力扣(LeetCode)

class Solution {public int maxArea(int[] height) {//这道题比较特殊,因为两边是任意选的,//所以中间可以出现比两边高的情况,实际就是双指针求一个矩形的面积//宽度为左右边界的差值,高度为左右高度的较小值,所以我们进行模拟int l = 0, r = height.length - 1, maxres = 0;while(l < r){if(maxres < (r - l) * Math.min(height[l], height[r])){maxres = (r - l) * Math.min(height[l], height[r]);}//不断挪动边界,因为宽度是在不断缩小的,那么如果我们挪动较高的那边,//得到的结果一定比以前小,所以挪动较低的那一边if(height[l] <= height[r]){l++;}else{r--;}}return maxres;}
}

第二题:12. 整数转罗马数字 - 力扣(LeetCode)

class Solution {// 数值对应的罗马数字int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};// 罗马数字String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};// 将整数转换为罗马数字public String intToRoman(int num) {StringBuilder sb = new StringBuilder();// 遍历数值对应的数组for (int i = 0; i < values.length; ++i) {int value = values[i];String symbol = symbols[i];// 当 num 大于等于当前数值时,循环减去该数值,并将对应的罗马数字追加到结果中while (num >= value) {num -= value;sb.append(symbol);}// 如果 num 等于 0,表示已经转换完成,直接跳出循环if (num == 0) {break;}}// 返回转换后的罗马数字字符串return sb.toString();}
}

第三题:13. 罗马数字转整数 - 力扣(LeetCode)

class Solution {// 将罗马数字转换为整数public int romanToInt(String s) {int res = 0; // 结果变量,用于存储转换后的整数值int preNum = getValue(s.charAt(0)); // 前一个罗马数字对应的整数值// 遍历字符串 s 中的每个字符for(int i = 1; i < s.length(); i++){int num = getValue(s.charAt(i)); // 当前字符对应的整数值// 如果前一个字符对应的整数值小于当前字符对应的整数值,则将结果减去前一个字符对应的整数值if(preNum < num){res -= preNum;}else{ // 否则,将结果加上前一个字符对应的整数值res += preNum;}preNum = num; // 更新前一个字符对应的整数值为当前字符对应的整数值}res += preNum; // 加上最后一个字符对应的整数值return res; // 返回最终的整数值}// 获取字符对应的整数值private int getValue(char ch){switch(ch) {case 'I' : return 1;case 'V' : return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;default: return 0;}}
}

第四题:14. 最长公共前缀 - 力扣(LeetCode)

import java.util.Arrays;
import java.util.Comparator;class Solution {// 寻找字符串数组中的最长公共前缀public String longestCommonPrefix(String[] strs) {// 根据字符串长度对数组进行排序Arrays.sort(strs, new Comparator<String>(){@Overridepublic int compare(String o1, String o2){return o1.length() - o2.length();}});// 获取最短字符串的长度int maxlen = strs[0].length();int res = 0, index = 0; // res: 公共前缀长度,index: 当前比较的字符索引// 遍历最短字符串的长度while(index < maxlen){char tmpch = '.'; // 临时变量,用于存储当前比较的字符,默认为'.'表示未初始化// 遍历字符串数组中的每个字符串for(String st : strs){// 如果临时字符是'.',则将当前字符作为临时字符if(tmpch == '.'){tmpch = st.charAt(index);}// 否则,如果当前字符与临时字符不相等,则返回公共前缀(如果 res 不为 0),否则返回空字符串else{if(st.charAt(index) != tmpch){return res != 0 ? strs[0].substring(0, res) : "";}}}index++; // 移动到下一个字符位置res++; // 更新公共前缀长度}// 返回最长公共前缀return strs[0].substring(0, res);}
}

 第五题:15. 三数之和 - 力扣(LeetCode)

class Solution {// 定义一个方法threeSum,接收一个整数数组nums作为参数,返回所有和为0的三元组public List<List<Integer>> threeSum(int[] nums) {// 初始化结果列表List<List<Integer>> res = new ArrayList<>();// 对数组进行排序,以便于后续的双指针操作Arrays.sort(nums);// 遍历数组,使用i作为第一个数字for(int i = 0; i < nums.length - 2; i++) {// 跳过相同的元素,避免重复的三元组if(i > 0 && nums[i] == nums[i - 1]) {continue;}// 初始化左右指针int j = i + 1, k = nums.length - 1;// 使用while循环进行双指针操作,寻找和为0的三元组while(j < k) {// 计算当前三元组的和int cursum = nums[i] + nums[j] + nums[k];// 如果当前和小于0,说明需要增大和,因此移动左指针jif(cursum < 0) {j++;} else if(cursum > 0) {// 如果当前和大于0,说明需要减小和,因此移动右指针kk--;} else {// 如果当前和为0,找到了一个三元组res.add(Arrays.asList(nums[i], nums[j], nums[k]));// 跳过相同的元素,避免重复的三元组while(j < k && nums[j] == nums[j + 1]) {j++;}while(j < k && nums[k] == nums[k - 1]) {k--;}// 移动指针继续寻找下一个可能的三元组j++;k--;}}}// 返回所有找到的三元组return res;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

##22 深入理解Transformer模型

文章目录 前言1. Transformer模型概述1.1 关键特性 2. Transformer 架构详解2.1 编码器和解码器结构2.1.1 多头自注意力机制2.1.2 前馈神经网络 2.2 自注意力2.3 位置编码 3. 在PyTorch中实现Transformer3.1 准备环境3.2 构建模型3.3 训练模型 4. 总结与展望 前言 在当今深度学…

如何隐藏计算机IP地址,保证隐私安全?

隐藏计算机的IP地址在互联网在线活动种可以保护个人隐私&#xff0c;这是在线活动的一种常见做法&#xff0c;包括隐私问题、安全性和访问限制内容等场景。那么如何做到呢?有很5种方法分享。每种方法都有自己的优点和缺点。 1. 虚拟网络 当您连接到虚拟服务器时&#xff0c;您…

【TypeScript】对象类型的定义

简言 在 JavaScript 中&#xff0c;我们分组和传递数据的基本方式是通过对象。在 TypeScript 中&#xff0c;我们通过对象类型来表示这些对象。 对象类型 在 JavaScript 中&#xff0c;我们分组和传递数据的基本方式是通过对象。在 TypeScript 中&#xff0c;我们通过对象类…

25考研英语长难句Day03

25考研英语长难句Day03 【a.词组】【b.断句】 多亏了电子学和微力学的不断小型化&#xff0c;现在已经有一些机器人系统可以进行精确到毫米以下的脑部和骨骼手术&#xff0c;比技术高超的医生用手能做到的精确得多。 【a.词组】 词组翻译thanks to多亏了&#xff0c;由于cont…

linux Docker在线/离线服务安装并支持centos7和centos8系统

注&#xff1a;以下内容都是经过测试;能在生产环境使用. 一、centos7版本的docker在线安装 1&#xff1a;运行以下命令&#xff0c;下载docker-ce的yum源。 sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

波搜索算法(WSA)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

​ 声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 一、初始化阶段 二、全…

(2)双指针练习:复写零

复写零 题目链接&#xff1a;1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入…

如何设计实用的ITSM自助服务台

在现代IT服务管理&#xff08;ITSM&#xff09;领域中&#xff0c;自助服务台已成为IT运维环境的核心组件。它作为企业内部信息中心与其他部门用户之间的桥梁&#xff0c;一个以用户为中心的平台&#xff0c;更注重用户的自主性和自助能力&#xff0c;使用户能够直接访问所需的…

Java开发大厂面试第04讲:深入理解ThreadPoolExecutor,参数含义与源码执行流程全解

线程池是为了避免线程频繁的创建和销毁带来的性能消耗&#xff0c;而建立的一种池化技术&#xff0c;它是把已创建的线程放入“池”中&#xff0c;当有任务来临时就可以重用已有的线程&#xff0c;无需等待创建的过程&#xff0c;这样就可以有效提高程序的响应速度。但如果要说…

暴力数据结构之二叉树(堆的相关知识)

1. 堆的基本了解 堆&#xff08;heap&#xff09;是计算机科学中一种特殊的数据结构&#xff0c;通常被视为一个完全二叉树&#xff0c;并且可以用数组来存储。堆的主要应用是在一组变化频繁&#xff08;增删查改的频率较高&#xff09;的数据集中查找最值。堆分为大根堆和小根…

基于Java的飞机大战游戏的设计与实现(论文 + 源码)

关于基于Java的飞机大战游戏.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89313362 基于Java的飞机大战游戏的设计与实现 摘 要 现如今&#xff0c;随着智能手机的兴起与普及&#xff0c;加上4G&#xff08;the 4th Generation mobile communication &#x…

【计算机毕业设计】springboot房地产销售管理系统的设计与实现

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低房地产公司的运营人员成本&#xff0c;实现了房地产销售的 标准化、制度化、程序化的管理&#xff0c;有效地防止了房地产销售的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、…

Zynq UltraScale+ RFSoC 配置存储器器件

Zynq UltraScale RFSoC 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Zynq UltraScale RFSoC 器件执行擦除、空白检查、编程和验证等配置操 作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列…

GAME101-Lecture07学习

前言 今天主要讲shading&#xff08;着色&#xff09;。在讲着色前&#xff0c;要先讲图形中三角形出现遮挡问题的方法&#xff08;深度缓存或缓冲&#xff09;。 先采样再模糊错误&#xff1a;对信号的频谱进行翻译&#xff08;在这期间会有频谱的混叠&#xff09;&#xff…

InternLM-Chat-7B部署调用-个人记录

一、环境准备 pip install modelscope1.9.5 pip install transformers4.35.2 二、下载模型 import torch from modelscope import snapshot_download, AutoModel, AutoTokenizer import os model_dir snapshot_download(Shanghai_AI_Laboratory/internlm-chat-7b, cache_di…

pytest教程-46-钩子函数-pytest_sessionstart

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_report_testitemFinished钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_sessionstart钩子函数的使用方法。 pytest_sessionstart 是 Pytest 提供的一个钩子函数&#xff0c…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

&#xff08;1&#xff09; 都知道&#xff0c;在 vs2019 里用 typeid 打印的类型不大准&#xff0c;会主动去掉一些修饰符&#xff0c; const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数&#xff0c;这个函…

vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言&#xff0c;安装的时候语言就选中文就好了。选择中文&#xff0c;在安装的时候就可以选择国内 163 的源。 开启 ssh 功能 先提权&#xff0c;用 root 账户 su安装 ssh 安装 ssh-server apt install openssh-server启动 ssh systemctl start ssh查看 ssh 状态 systemctl st…

5.15_操作符详解

1、操作符分类&#xff1a; 算术操作符 - * / % 移位操作符 << >> 位操作符 & | ^ 赋值操作符 - ...... 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2、算术操作符 - * / …

解决kali Linux安装后如何将语言修改为中文

开启虚拟机 用root用户进入终端 进入终端执行dpkg-reconfigure locales命令 选择en_US.UTF-8 UTF-8选项&#xff0c;按空格键将其取消。 选择zh_CN.UTF-8 UTP-8&#xff0c;按空格选择&#xff0c;按tab键选择ok。 选择zh_CN.UTF-8字符编码&#xff0c;按tab键选择ok&#xff0…
最新文章