力扣:670. 最大交换

Leetcode 670 解析: Maximum Swap(最大交换) - Python 文章目录题目描述题目分析代码实现日期 题目描述 Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get. Example 1: Input: 2736 Output: 7236 Explanation: Swap the number 2 and the numbe 阅读详情
package com.算法专练.力扣.最大交换;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author xnl
 * @Description:
 * @date: 2022/9/13   23:15
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int num = 2736;
        System.out.println(solution.maximumSwap2(num));
    }

    /**
     * 直接遍历,然后进行交换
     * @param num
     * @return
     */
    public int maximumSwap(int num) {
        char[] chars = String.valueOf(num).toCharArray();
        int maxValue = 0;
        for (int i = 0; i < chars.length; i++){
            for (int j = 0; j < chars.length; j++){
                swap(chars, i , j);
                maxValue = Math.max(maxValue, Integer.parseInt(new String(chars)));
                swap(chars, i , j);
            }
        }
        return maxValue;
    }

    private void swap(char[] chars, int i , int j){
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }


    /**
     * 贪心
     * @param num
     * @return
     */
    public int maximumSwap2(int num) {
        char[] chars = String.valueOf(num).toCharArray();
        int maxIndex = chars.length - 1;
        int idx1 = -1, idx2 = -1;
        for (int i = chars.length - 1; i >= 0; i--){
            if (chars[i] > chars[maxIndex]){
                maxIndex = i;
            } else if (chars[i] < chars[maxIndex]){
                idx1 = i;
                idx2 = maxIndex;
            }
        }
        if (idx1 >= 0){
            swap(chars, idx1, idx2);
            return Integer.parseInt(new String(chars));
        }
        return num;
    }
}

别再手动抓波形了!用Synopsys AXI VIP的Port Monitor自动收集事务数据(附完整连接Scoreboard代码) 当标准Port Monitor无法满足需求时,Synopsys提供的callback机制就像一套精密的手术工具,允许你深入VIP内部进行定制化改造。创建自定义监控点的四步法继承基类// 其他自定义字段...endclass重写目标phase方法// 克隆事务并发送到自定义端口在env中注册callbackcustom_cb);连接自定义端口到分析组件经典应用场景地址phase特定检查数据beat级监控自定义性能统计异常注入检测。 阅读详情

相关推荐

Word论文插入带有方括号序号的参考文献——尾注+交叉引用

文章目录1. 尾注功能2. 为参考文献的序号添加方括号3. 调整参考文献前的序号大小4. 重复引用同一参考文献5. 将交叉引用的序号改为带有方括号的上标序号格式6. 删除参考文献前的尾注横线 1. 尾注功能 首先使用尾注功能顺序插入参考文献,暂时不考虑方括号问题,具体操作如下: ① 将光标放在需要插入参考文献角标的地方 ② 在word菜单栏,“引用-脚注部分右下角箭头”(用来设置尾注格式) ③如...

Your_Raymond的博客 9万+

【力扣 leetcode】670:最大交换

力扣 leetcode:670 最大交换

weixin_45800258的博客 607

当爬虫遇到TikTok滑块:一份给开发者的verifyV2避坑指南与调试心得

本文详细解析了TikTok滑块验证码verifyV2的破解与优化策略,涵盖验证码触发机制、滑块图片获取、验证请求构造及高级调试技巧。通过实战案例和代码示例,帮助开发者有效应对复杂反爬机制,提升验证通过率。特别针对verifyV2系统的加密算法和轨迹模拟提供了专业解决方案。

weixin_30919429的博客 641

Leetcode 670:最大交换

题目描述 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是[0, 108] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/...

weixin_35338624的博客 494

中国30米逐年植被净初级生产力(NPP)数据集(1982年至今CASA模型)

1.3 气温、降水、地表太阳辐射数据 气温和降水数据月度空间插值数据是基于全国2400多个站点的日观测数据,在计算各气象要素月值的基础上,基于Anusplin软件插值生成的1982年以来各月度30米分辨率气温和降水栅格数据,插值过程中引入高程作为协变量。气温单位为℃,降水单位为mm。1.2 土地覆盖数据 土地覆盖数据来源于1985 年-2020年全球30米精细地表覆盖动态监测产品,该数据集包含29个地表覆盖类型,进行拼接、裁剪、重分类和重采样处理,获得8期250米分辨率的植被类型数据。

地球资源数据云的官方博客 2839

Ubuntu环境下rknn-toolkit2的安装与兼容性解析

本文详细解析了在Ubuntu系统上安装瑞芯微rknn-toolkit2工具链的完整流程与关键注意事项。文章重点剖析了rknn-toolkit2与旧版rknn-toolkit的核心兼容性问题,强调两者在API、模型格式及运行时库上互不兼容,并推荐使用Conda虚拟环境进行隔离管理,为RK3566、RK3588等开发板的AI模型部署提供清晰的实践指南。

weixin_29041767的博客 375

Leetcode: 670. 最大交换

今天的每日一题有点难度,只能找与之类似的几道题进行练习,前路漫漫,也要保持每日一题。 看一下与之相似的两道题,Leetcode 的推荐能力还是可以的,同时,Leetcode 很多题目更侧重于对思维的考察。 题目: 侃侃: 找一个最大的数,我们都知道,一个数只要最高位的数字比较大,那么这个数就是很大的。 所以我们贪心的选数进行交换,只要找到最大的数放到最高位就可以啦。 但是,机会只有一次,如果最高位已经是最大的数字了,那么就不需要进行交换了,进而次高位如果也是最大的数字,都不用浪费机会.

潘小蓝的博客 450

校园网改造实录:手把手教你用华为MA5800 OLT调试全光网(附常用排错命令)

本文详细记录了校园全光网改造中华为MA5800 OLT的部署与调试过程,涵盖设备选型、基础配置、ONU批量部署及高频故障排查。通过实战案例和排错命令,帮助网络工程师快速掌握全光网调试技巧,实现低延迟、高稳定的网络性能。

weixin_42552716的博客 573

LeetCode 670: 最大交换

class Solution { public: int maximumSwap(int num) { if(num<=10)return num;//若是<10,则直接弹出该值,无需操作; vector<int> res; while(num){res.push_back(num%...

Amaris_wang 158

以太网接口及POE设计

PoE标准 Power Over Ethernet 是有源以太网供电的简称 通过Cat-5电缆供电在IEEE 802.3af以太网供电标准中进行了定义。PoE标准以前限制在几瓦以内,但更新的PoE技术可实现更高的功率。例如,PoE+允许每端口功率高达25 W,而PoE++(四 对以太网供电系统)通过使用现有电缆的所有电线允许70 W到100 W的功率。与此PoE标准并行的是ADI公司定义的专有标准 LTPoE++™,该标准定义高达90W的受电设备(PD)功率规范(请参见表1)。 表1. ADI...

u010783226的专栏 1万+

阿里云一键登录Java后端实战:5分钟搞定号码认证服务集成(附完整代码)

本文详细介绍了如何在Java后端项目中快速集成阿里云号码认证服务(PNVS),实现高效、安全的一键登录功能。文章从核心架构、安全机制解析入手,提供了完整的Maven依赖配置、服务端环境准备、核心业务逻辑实现(包括Token验证、用户处理、异常降级)以及生产环境下的性能优化、监控与部署方案,并附有可直接使用的完整代码示例。

p1q2r的博客 844

解题思路-LeetCode第670题:最大交换

解题思路-LeetCode第670题:最大交换 题目描述: 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 解题思路: 找两个交换位: 第一个是: 各位数从大到小排,第一个与原位置数不同的位置 第二个是: 与原位置数不同的位置中数值最大并且最靠后的位置 代码如下: 提交后,通过。 ...

weixin_48153141的博客 391

16、Cortex-M7处理器:高性能与复杂架构解析

本文深入解析了Cortex-M7处理器的高性能架构与复杂设计,涵盖AHB总线矩阵优化、超标量六阶段双发射流水线、增强型分支预测单元及双精度浮点支持。重点介绍了其独特的内存层次结构,包括指令与数据TCM、片上缓存和AXI-M 64位总线接口,提升系统并行性与执行效率。通过实际测试对比M4与M7性能差异,并演示如何将代码与数据定位到TCM以实现零等待运行。同时阐述了缓存机制的工作原理及其对系统性能的影响,为开发者提供全面的性能优化指导。

a1b2c3d的博客 126

LeetCode : 670. Maximum Swap 最大交换 交换数中两位使之最大

试题: Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get. Example 1: Input: 2736 Output: 7236 Explanati...

心之所向 1259

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

leetcode-670:最大交换

又比如27734,在2的右边最大是7,那么要交换最后一个7才能保证最大,结果为77234。给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。比如2734, 在2的右边最大是7,因此交换结果7234。贪心:从头遍历,找到右侧一个比它大,且值最大的数。因此使用maxRight记录当前索引,右侧最大的数。

菊头蝙蝠的博客 246

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

力扣解题思路:670. 最大交换/parseInt和valueOf的区别

670. 最大交换 思路: 看到这题我第一反应就是想到下一个排列,不过很快发现这两题并没办法使用同一种思路,因为这一题是要求最大,且只能交换一次,相当于多了很多别的限制。 初步的思路是,直接将数组排序,然后和原来的数组从左往右不断对比,如果一样就下一位,如果不一样则往数组后面找到这个最大数,然后交换位置,交换完就直接break即可: public int maximumSwap(int num) { if(num<10) return num; char[] a

qq_39879315的博客 280

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[贪心]leetcode670:最大交换(medium)

题目: 题解: 贪心法 将数字转换为字符串,然后由前向后遍历,寻找比下标i数字大的最大的数字下标index,然后交换这两个下标所对应的数字就得到最后的结果了。 代码如下: class Solution { public: //思路:将数字转换为字符串,然后由前向后遍历,寻找比下标i数字大的最大的数字下标index,然后交换这两个下标所对应的数字就得到最后的结果了 int ...

algsup 420

LeetCode:670. 最大交换(Java 贪心)

此题是核心就是从左到右,找到 第一个其右侧数中的最大值比当前数大的位置,进行交换。

Cosmoshhhyyy的博客 690

LeetCode打卡:670. 最大交换

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 链接:https://leetcode.com/problems/maximum-swap/ 解题思路+代码如下:(略生硬) class Solution(object): def maximumSwap(self, num): """ :t

Honbio的博客 222

图解LeetCode——670. 最大交换(难度:中等)

如下图所示:将原数组与排序数组进行对比,发现第3个位置是不对的,应该是8,但是原数组却是3,所以我们将原数组的。元素中,最大值的下标index存入到相应的maxIndexs中。根据题意描述,我们要交换两个数,使其交换后得到最大值。的方式,从数组的尾部开始找8,当找到后,将8替换为3即可。,当与原数组对比的时候,我们可以采用对排序后的数组执行。,也就是说,每个元素在判断最大值的时候,都是。那么,根据这个规律,我们再来尝试解答本题。的值,如果发现不同了,那么互换的下标就是。那么,下一步,就是需要将原数组的。

爪哇缪斯的博客 584

LeetCode 670 最大交换

LeetCode 670 最大交换 解题思路

quixotic的博客 556

LeetCode-670:Maximum Swap (交换数字得最大整数)

题干: Given a non-negative integer, you could swap two digitsat mostonce to get the maximum valued number. Return the maximum valued number you could get. 给定一个正整数,最多交换两个数字一次得到一个最大的值。 Example 1: ...

weixin_33708432的博客 288

LeetCode 最大交换(670题)两种方法图解

LeetCode 最大交换 @author:Jingdai @date:2020.12.25 题目描述(670题) 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 思路及代码 方法1 排序 首先看一种好理解的方法,第一步将原数字按从大到小的顺序排序,也就是如果不规定交换次数所能达到的最大值。如图,比如题目中的 2736 排序后就得到了 sortedNums = 7632。然后我们对比排序后的数

qq_41512783的博客 843

LeetCode-670:Maximum Swap (交换数字得最大整数) -- medium

给定非空非负整数,最多交换其中的两个数字,得到最大的整数,返回最大整数

大树先生的博客 4191

Leetcode刷题笔记题解(C++):670. 最大交换

假设数字 9923676。 从右边找最大的数字的下标maxindex,然后向左边寻找小于最大数字的数的下标,直到找到最左边,交换两者得出新的数字,比如从左到右递减的数字如9621则不需要变化,在寻找中记录这种数字。

Demo.demo的博客 665
上一篇: 牛客网:NC142 最长重复子串
下一篇: 牛客网:NC169 修剪叶子
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值