最大交换(java,算法,贪心)

简介: 最大交换(java,算法,贪心)

最大交换(java,算法,贪心)


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

示例 1 :

输入: 2736

输出: 7236

解释: 交换数字2和数字7。

示例 2 :

输入: 9973

输出: 9973

解释: 不需要交换。

注意:

给定数字的范围是 [0, 10的8次方]

package cn.itcast.algorithm.TTT_78;
public class Main83 {
    public static void main(String[] args) {
        int num = 2736;
        int max =  maximumSwap(num);
        System.out.println(max);
    }
    private static int maximumSwap(int num) {
        //num给定数字的范围是 [0, 10的8次方]
        String numStr = String.valueOf(num);
        int length = numStr.length();
        int[] numArr = new int[length];
        for (int i = 0; i < length; i++) {
            numArr[i] = numStr.charAt(i) - '0';
        }
        for (int i = 0; i < length - 1; i++) {
            // 找出该位置后面最大且比它小的数,角标相同继续往后,然后交换
            int maxIndex = i + 1;
            int maxNum = 0;
            for (int j = i + 1; j < length; j++) {
                if (numArr[j] >= maxNum && numArr[j] > numArr[i]) {
                    maxNum = numArr[j];
                    maxIndex = j;
                }
            }
            if (maxNum != 0){
                int temp = numArr[maxIndex];
                numArr[maxIndex] = numArr[i];
                numArr[i] = temp;
                break;
            }
        }
        StringBuilder resStr = new StringBuilder();
        for (int i = 0; i < length; i++) {
            resStr.append(numArr[i]);
        }
        return Integer.valueOf(resStr.toString());
    }
}
相关文章
|
5天前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
6天前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
11天前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
27 6
|
6天前
|
搜索推荐 算法 Java
|
11天前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
29 2
|
11天前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
25 1
|
11天前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
22 1
|
4天前
|
算法 Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
9 0
|
6天前
|
搜索推荐 算法 Java
插入排序算法(Java代码实现)
这篇文章通过Java代码示例详细解释了插入排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过插入排序对数组进行升序排列。
|
11天前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
29 0