【LeetCode每日一题】670. 最大交换

2024-1-22

文章目录

      • [670. 最大交换](https://leetcode.cn/problems/maximum-swap/)
          • 思路:

670. 最大交换

在这里插入图片描述

思路:

从后往前遍历整数的字符数组,找到第一个比当前最大值小的数字,然后将该数字与最大值进行交换。

  1. 将给定的整数转换为字符数组。
  2. 初始化变量 maxIdx 为字符数组的最后一个索引,用于记录当前最大值的索引。
  3. 初始化变量 idx1idx2 为-1,用于记录需要交换的两个索引。
  4. 从字符数组的最后一个元素开始往前遍历。
    • 如果当前字符比最大值大,则更新最大值的索引 maxIdx
    • 如果当前字符比最大值小,则将当前索引赋值给 idx1,将 maxIdx 赋值给 idx2
  5. 判断是否存在需要交换的索引:
    • 如果 idx1大于等于0,说明存在需要交换的索引。调用 swap 函数交换字符数组中 idx1idx2 位置对应的字符。将字符数组转换为整数,并返回结果。
    • 如果不存在需要交换的索引,直接返回原始整数。
public int maximumSwap(int num) {char[] charArray = String.valueOf(num).toCharArray(); // 将整数转换为字符数组int n = charArray.length;int maxIdx = n - 1; // 记录当前最大值的索引,默认为最后一位int idx1 = -1, idx2 = -1; // 记录需要交换的两个索引,默认为-1for (int i = n - 1; i >= 0; i--) { // 从后往前遍历字符数组if (charArray[i] > charArray[maxIdx]) { // 如果当前字符比最大值大maxIdx = i; // 更新最大值的索引} else if (charArray[i] < charArray[maxIdx]) { // 如果当前字符比最大值小idx1 = i; // 记录第一个需要交换的索引idx2 = maxIdx; // 记录第二个需要交换的索引为当前最大值的索引}}if (idx1 >= 0) { // 如果存在需要交换的索引swap(charArray, idx1, idx2); // 交换两个索引对应的字符return Integer.parseInt(new String(charArray)); // 将字符数组转换为整数并返回} else {return num; // 如果不存在需要交换的索引,则返回原始整数}
}public void swap(char[] charArray, int i, int j) { // 交换字符数组中两个索引对应的字符char temp = charArray[i];charArray[i] = charArray[j];charArray[j] = temp;
}

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

数据库-分库分表初探

文章目录 分库策略垂直切分垂直分库&#xff08;专库专用&#xff09;垂直分表&#xff08;拆表&#xff09;优点缺点 水平(Sharding)切分水平分表库内分表分库分表优点缺点 分表策略hash取模方案range范围区间取值方案映射表方案 分库分表问题事务一致性问题跨节点关联查询跨节…

机器学习-PCA降维【手撕】

降维算法 降维算法中的”降维“&#xff0c;指的是降低特征矩阵中特征的数量&#xff0c;其目的是为了让算法运算更快&#xff0c;效果更好&#xff0c;同时可以方便数据可视化。过高的维度特征维度的特征矩阵无法通过可视化&#xff0c;数据的性质也就比较难理解。其中主要用…

浅谈拨测在网络安全中的应用

在当今数字化时代&#xff0c;网络安全成为各个行业和组织关注的焦点。为了保障网络的稳定性和信息的安全&#xff0c;拨测安全性成为一种日益重要的工具。本文将介绍拨测在网络安全中的应用&#xff1a; 1.威胁模拟 通过威胁模拟&#xff0c;拨测安全性可以模拟各种网络攻击&a…

初谈C++:命名空间、输入输出

文章目录 前言C关键字命名空间命名空间的作用命名空间定义命名空间的使用 C的输入&输出 前言 什么是C&#xff1f; C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#…

mockjs(3)

mockjs&#xff08;1&#xff09; mockjs&#xff08;2&#xff09; 这篇主要是Mock.random工具类&#xff0c;前段要用的话主要是在模版中的占位符。mockjs&#xff08;1&#xff09;里面的3.2 6 Mock.random Mock.Random 是一个工具类&#xff0c;用于生成各种随机数据。 …

数据结构与算法-绪论

1 绪论 程序 数据结构 算法数据的逻辑结构 四种&#xff1a; 线性结构树形结构图状结构集合结构 数据的存储结构 &#xff08;逻辑结构在存储器中的映像&#xff09;常见的有&#xff1a; 数组链表栈队列树堆散列表图 基本数据类型&#xff1a; intfloatdoublecharbool 算法…

Wpf 使用 Prism 实战开发Day15

用户登录和注册接口 一.创建用户登录注册控制器&#xff08;LoginController&#xff09; /// <summary>/// 用户登录注册控制器/// </summary>[ApiController][Route("api/[controller]/[action]")]public class LoginController: ControllerBase{} 二.…

houdini fft 使用三层for each结构 以及for 问题

for each 中 使用 attrib wrangle detail时&#xff0c;不连接foreach_count1&#xff0c;只运行一次 for each 问题 merge eachiteration 对结构进行合并 transform 位置的移动针对的是原位置对原点的距离&#xff0c;而非移动后置0后再移

vivado I/O和时钟规划是定义和分析、I/O和时钟规划阶段、RTL前I/O规划、RTL I/O规划、网表I/O规划、实施设计的最终I/O验证

介绍 I/O和时钟规划是定义和分析 FPGA/自适应SoC和印刷电路板&#xff08;PCB&#xff09;&#xff0c;并分配各种互连信号到设备的物理引脚。这个过程包括PCB设计者、FPGA设计者和系统设计者有以下关注点和要求&#xff1a; •简化关键信号连接&#xff0c;以缩短信号长度并…

Hotspot源码解析-第22章-vtable和itable的重新初始化

第22章-vtable和itable的重新初始化 这个函数的调用流程是 init.cpp->init_globals() universe.cpp->universe_post_init() bool universe_post_init() {// 防止二次初始化assert(!is_init_completed(), "Error: initialization not yet completed!");Univ…

【C++】list容器功能模拟实现

介绍 上一次介绍了list队容器的迭代器模拟&#xff0c;这次模拟实现list的简单功能&#xff0c;尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据&#xff0c;因此&#xff0c;结构设置与迭代器设置同理&#xff0c;需要引入结点&…

Python中的open与JSON的使用

目录 1 使用 open 函数进行文件操作 2 使用 json 模块进行 JSON 数据处理&#xff1a; 2.1 写入JSON 文件 2.2 读取JSON 文件 在 Python 中&#xff0c;open 函数和 json 模块常用于文件的读写和 JSON 数据的处理。 1 使用 open 函数进行文件操作 open 函数用于打开文件…

复现NAS with RL时pytorch的相关问题

optimizer.zero_grad()是什么&#xff1f; optimizer.zero_grad()是PyTorch中的一个操作&#xff0c;它用于清零所有被优化变量&#xff08;通常是模型的参数&#xff09;的梯度。 在PyTorch中&#xff0c;当你计算某个张量的梯度时&#xff08;比如通过调用.backward()函数&…

“智汇语言·驭领未来”——系列特辑:LLM大模型信息获取与企业应用变革

“智汇语言驭领未来”——系列特辑&#xff1a;LLM大模型信息获取与企业应用变革 原创 认真的飞速小软 飞速创软 2024-01-16 09:30 发表于新加坡 本期引言 LLM&#xff08;Large Language Model&#xff09;大型语言模型以其自然语言理解和生成能力&#xff0c;正以前所未有的…

libtorch学习第六

构建卷积网络 #include<torch/torch.h> #include<torch/script.h> #include<iostream>using std::cout; using std::endl;class LinearBnReluImpl : public torch::nn::Module { private:torch::nn::Linear ln{ nullptr };torch::nn::BatchNorm1d bn{ nullp…

在jetson上对fastdeploy进行源码编译(完整版)

文章目录 准备工作下载飞桨推理库编译代码可能遇到的问题Could NOT find PythonNo CMAKE_CUDA_COMPILER could be found.准备工作 jetpackcudaopencv下载飞桨推理库 根据jetpack的版本选择对应的推理库版本 https://www.paddlepaddle.org.cn/inference/v2.6/guides/install/do…

开源的测试平台快2千星了,能带来多少收益呢

最近看了下自己去年初开源的测试平台&#xff0c;star一起算的话也到1.7k了&#xff1a; 做开源的初心一方面是想把自己的理解和思想展示出来&#xff0c;另一方面是想进一步打造个人IP&#xff0c;提升影响力&#xff08;其实这个想法很早之前就有了&#xff0c;计划过无数次但…

Day 28 | 回溯 93.复原IP地址 、78.子集 、 90.子集II

93.复原IP地址 题目 文章讲解 视频讲解 思路&#xff1a;每轮开始的位置需要变化就需要设置start class Solution {List<String> result new ArrayList<>();public List<String> restoreIpAddresses(String s) {if (s.length() < 4 ||s.length() >…

2765. 最长交替子数组 ( leetcode 01 - 23 每日 )

链接 : 最长交替子数组 思路 : 对于每个起点&#xff0c;都是x,x1,x,x1....这样的循环&#xff0c;那么枚举每个起点模拟即可 &#xff1b; 代码 : class Solution {public int alternatingSubarray(int[] nums) {int ans 0-1 ;int n nums.length , i 0 ; while(i &…

高精度运算合集,加减乘除,快速幂,详细代码,OJ链接

文章目录 零、前言一、加法高精度加法步骤P1601 AB 二、减法高精度减法步骤P2142 高精度减法 三、乘法高精度乘法步骤P1303 A*B 四、除法高精度除法步骤P1480 A/B 五、高精度快速幂麦森数 零、前言 高精度运算是某些题目涉及大数值运算且范围超出语言内置类型允许范围时采取的处…