每日一练 2025.5.16

news2025/1/20 5:08:34
题目;

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

示例 1 :

输入: 2736
输出: 7236
解释: 交换数字2和数字7。

示例 2 :

输入: 9973
输出: 9973
解释: 不需要交换。

注意:

  1. 给定数字的范围是 [0, 108]
解题:
  1. 转换表示
    将输入的非负整数num转换为字符数组digits,便于我们检查每一位数字并在之后进行交换。

  2. 建立索引表
    创建一个数组last来记录每个数字0-9在字符数组digits中出现的最后位置。这样我们就可以快速定位到在进行交换时可用的最大数字的位置。

  3. 查找交换位置
    从字符数组digits的最左端(最高位)开始遍历,对每个当前位置i, 我们从数字9递减至当前数字,检查是否有比当前数字大的数字出现在其之后的位置上。这是通过检查索引表last与当前位置i来确定的。

  4. 确定交换策略
    一旦我们找到一个比当前数字digits[i]大且在其后面的数字,则将当前数字与这个找到的最大数字进行交换。因为我们要获取可能的最大值,所以我们总是优先选择最大的可交换数字。

  5. 执行交换并返回结果
    进行交换后,我们将字符数组转回整数并返回结果。如果遍历整个数组都没有找到可交换的位置,则表示原数字已经是最大值,直接返回原始整数。

代码:
class Solution {
    public int maximumSwap(int num) {
        char[] digits = Integer.toString(num).toCharArray();

        // 储存每个数字最后一次出现的位置
        int[] last = new int[10];
        for (int i = 0; i < digits.length; i++) {
            last[digits[i] - '0'] = i;
        }

        // 从左向右遍历所有的数字
        for (int i = 0; i < digits.length; i++) {
            // 从9开始向下查找,找到第一个在当前数字之后出现的最大数字
            for (int d = 9; d > digits[i] - '0'; d--) {
                if (last[d] > i) {
                    // 发现可以交换的两个数字,进行交换
                    char temp = digits[i];
                    digits[i] = digits[last[d]];
                    digits[last[d]] = temp;
                    // 返回交换后的新数字
                    return Integer.parseInt(new String(digits));
                }
            }
        }

        // 如果没有交换发生,直接返回原数字
        return num;
    }
}
知识点解析:

这段代码使用了以下Java编程知识点:

  1. 类和方法定义:定义了一个名为 Solution 的类和一个名为 maximumSwap 的方法,它接收一个 int 类型的参数并返回一个 int 类型的结果,遵循了基本的面向对象编程原则。

  2. 字符数组:使用 Integer.toString(num).toCharArray() 将整数 num 转换成对应的字符数组,每个字符表示一个数字位。

  3. 数组:定义了一个名为 last 的整数数组来存储每个数字字符最后出现的索引位置。

  4. 循环控制结构:代码中使用了 for 循环遍历字符数组和查找数字位。

  5. 条件控制结构:使用 if 条件语句来判断是否存在一个较大位在当前位数字后面的情况,以此决定是否执行交换。

  6. ASCII码:利用字符 '0' 的ASCII值作为参考,对字符数组中的数值字符进行ASCII计算,将字符转换为相应的整数值。

  7. 字符串拼接与转换:基于字符数组创建了一个新的字符串,并把交换完的字符数组转换回整数。

  8. 返回语句:在找到可以交换的两个数字并交换后,返回新构造的整数,或者在无需交换的情况下返回原始整数。

知识点详细描述
类和方法定义在 Solution 类中定义了 maximumSwap 方法,此方法执行主要的操作。
字符数组使用 toCharArray() 方法将数字转换为它们的字符表示形式,方便操作每个单独的数字。
数组定义了一个名为 last 的数组,用于存储每个数字最后一次出现的索引位置。
循环控制结构使用 for 循环来迭代字符数组以及从9遍历到0寻找可以交换的数字。
条件控制结构使用 if 语句来检查特定条件是否满足,并在条件为真时执行代码块。
ASCII码操作操作字符与数字之间的转换,利用 '0' 字符的ASCII值计算。
字符串拼接与转换通过 new String(digits) 将字符数组转换回字符串,然后用 Integer.parseInt() 将字符串转换为整数。
返回语句在方法的末尾返回要么是经过交换的新数值,要么是原始的输入数值。

2024.5.16

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

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

相关文章

首战告捷!KCM Trade漂移队出征2024日本漂移锦标赛(FDJ2)

卓越之姿&#xff0c;非凡之势&#xff01;KCM Trade漂移队以实力点燃激情 当激情与速度交织&#xff0c;当硝烟四起的战场转移到赛车领域&#xff0c;我们见证了一场精彩绝伦、实力与策略并存的较量——KCM Trade漂移队在2024日本漂移锦标赛&#xff08;FDJ2&#xff09;上展现…

AIGC文生视频:Sora模型报告总结

作为世界模拟器的视频生成模型 我们探索视频数据生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用对视频和图像潜在代码的时空补丁进行操作的变压器架构。我们最大的模型 Sora 能够生成一分钟…

惠海 H4112 同步整流30V降压芯片IC 24V转12V5V3.3V3.5A方案EN使能控制

惠海H4112同步整流30V降压芯片IC是一款DCDC电源管理芯片&#xff0c;它具备精确恒压和恒流的同步降压能力&#xff0c;适用于多种应用场景&#xff0c;如汽车充电器、照明灯、便携式设备供电电源和电池充电器等。 输出电压与电流调整&#xff1a; H4112支持输出电压在2.5V到2…

大模型时代,交换机技术演变、性能分析、衡量指标

OSI协议及在高性能计算中向RDMA的过渡 协议是为计算机网络内的数据交换而建立的一组规则、标准或协议。在法律层面&#xff0c;OSI七层协议被视为国际标准。该协议于20世纪80年代引入&#xff0c;旨在通过其七层网络模型标准化计算机间通信&#xff0c;以满足开放网络的要求。…

wamp 安装 PHP8

最近的项目需求&#xff0c;需要将PHP 升级8使用&#xff0c;一直都是用wamp &#xff0c;所以需要在wamp集成PHP8 1、首先下载 php8 的包。地址&#xff1a; PHP: Downloadshttps://www.php.net/downloads.php 下载版本是目前最新的 PHP8.3.7&#xff0c;不要下载nts 版本&a…

【MySQL精通之路】MySQL8.0官方文档-数据字典

目录 16.1 数据字典架构 如何升级数据字典 使用MySQL的调试版本查看数据字典表 16.2 删除基于文件的元数据存储 .frm文件 .par文件 .TRN文件 .TRG文件 .isl文件 db.opt文件 ddl_log.log文件 16.3 字典数据的事务存储 16.4 字典对象缓存 表空间定义缓存分区&#…

HTML(3)——常用标签3

引用标签 1.<blockquote>和<q> 两者都是对文本的解释引用&#xff0c;<blockquote>是用较大的段落进行解释&#xff0c;<q>是对较小的段落进行解释。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

人工智能(一)架构

一、引言 人工智能这个词不是很新鲜&#xff0c;早就有开始研究的&#xff0c;各种推荐系统、智能客服都是有一定的智能服务的&#xff0c;但是一直都没有体现出多高的智能性&#xff0c;很多时候更像是‘人工智障’。 但是自从chatGpt3被大范围的营销和使用之后&#xff0c;人…

提升工作效率,畅享Microsoft Office 2016 for Mac/win软件

Microsoft Office 2016 for Mac/win是一款功能强大的办公软件套件&#xff0c;为用户提供了一系列高效、易用的工具&#xff0c;帮助您在工作和学习中更加高效地处理各种任务。无论您是学生、职场人士还是企业管理者&#xff0c;这款软件都能满足您的各种需求。 首先&#xff…

霍庭格TruPlasma MF 7100 7050电源现货50KW

霍庭格TruPlasma MF 7100 7050电源现货50KW

MPLS小实验

实验图&#xff1a; 实验要求&#xff1a; 要求使用MPLS技术&#xff0c;将实验通&#xff0c;并在实验结束后使用命令&#xff1a;tracert -v -a 看是否基于标签进行转发。 如上&#xff1a;在每台路由器上都有两个环回&#xff0c;一个用于模拟用户网段&#xff0c;一个用于M…

计算机毕业设计 | vue+springboot电影票售卖 影院售票商城 电影管理系统(附源码+论文)

1&#xff0c;项目背景 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的电影院购票选座系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于vue和SpringBoot框架下开发&#xff1b;管理员通过后台管理系统实现管理影院信息&#xff0c;电影信息&…

双向链表结构

1.双向链表定义 双向链表也叫双链表&#xff0c;是链表的一种&#xff0c;它的每个数据节点中都有两个指针&#xff0c;分别指向直接前驱和直接后继。 2.实现双向链表 2.1创建双向链表类 /*** 基于双向链表实现元素存取的容器* param <E>*/ public class MyDoubleLinked…

智慧车间MES系统源码,采用java+springboot+vue.js+uniapp技术开发

智慧车间MES系统源码&#xff0c;采用javaspringbootvue.jsuniapp开发 MES系统&#xff08;Manufacturing Execution System&#xff09;是一种面向制造企业车间执行层的生产信息化管理系统&#xff0c;它是企业信息化系统的重要组成部分&#xff0c;是ERP&#xff08;Enterpri…

论文阅读笔记:Equivariant Multi-Modality Image Fusion

论文阅读笔记&#xff1a;Equivariant Multi-Modality Image Fusion 1 背景2 创新点3 方法4 模块4.1 模型假设4.2 U-Fuser4.3 伪感知模块4.4 等变图像融合 5 实验6 疑问 代码&#xff1a;https://github.com/Zhaozixiang1228/MMIF-EMMA 论文&#xff1a;https://arxiv.org/pdf/…

不怕太空物质「撞地球」!中科院团队提出日冕物质抛射识别新方法,接近人类识别结果

日冕物质抛射&#xff08;简称 CME&#xff09;是从太阳抛入行星际空间的大尺度等离子体团&#xff0c;是太阳释放能量的一种形式&#xff0c;也是影响空间天气的主要因素之一。大型日冕物质抛射事件会影响通信、导航、航空活动、电网运行等&#xff0c;为了避免安全威胁和资产…

2024长三角数学建模竞赛B题45页思路论文和代码分析

2024长三角数学建模B题45页论文和代码已完成&#xff0c;代码为B题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解、问题4模型的建立和…

Logic Pro X for Mac v11.0.0激活版:专业音频制作软件

对于音乐创作者来说&#xff0c;一个稳定、高效的工作流程至关重要。Logic Pro X for Mac提供了一系列工作流程优化功能&#xff0c;让你能够更快捷、高效地完成音乐创作。从添加音轨、录制音频&#xff0c;到混音和编曲&#xff0c;每一个步骤都如丝般顺滑。同时&#xff0c;L…

网页设计web

效果图代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>* …

【全开源】微凌客洗护小程序支持微信小程序+微信公众号+H5

微凌客洗护小程序是一款基于FastAdminThinkPHP开发的一款微凌客洗护小程序。 功能特性 客户端适配&#xff1a;暂支持微信小程序 多端登录&#xff1a;验证码、账号密码、微信授权 商品管理&#xff1a;支持正常价和会员价 商家管理&#xff1a;平台商家地图定位和企微客服…