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

2024-1-22

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; // 记录需要交换的两个索引,默认为-1
    for (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的图

相关推荐

  1. LeetCode每日 | 670. 交换

    2024-01-24 05:32:01       60 阅读
  2. 【力扣每日】力扣670交换

    2024-01-24 05:32:01       63 阅读
  3. leetcode670-交换

    2024-01-24 05:32:01       70 阅读
  4. leetcode670交换

    2024-01-24 05:32:01       55 阅读
  5. LeetCode 670. 交换

    2024-01-24 05:32:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 05:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 05:32:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 05:32:01       82 阅读
  4. Python语言-面向对象

    2024-01-24 05:32:01       91 阅读

热门阅读

  1. 自然语言处理的发展

    2024-01-24 05:32:01       59 阅读
  2. 算法题学习笔记-哈希

    2024-01-24 05:32:01       44 阅读
  3. 第八章 对象、类与面向对象编程(上)

    2024-01-24 05:32:01       52 阅读
  4. 计算机网络(第六版)复习提纲8

    2024-01-24 05:32:01       55 阅读
  5. 从0开始学习C++ 第二十课:模板与泛型编程

    2024-01-24 05:32:01       68 阅读
  6. Vue.js代码检查

    2024-01-24 05:32:01       55 阅读
  7. gitlab上传代码到仓库

    2024-01-24 05:32:01       58 阅读
  8. 嵌入式 从入门到精通 第七天

    2024-01-24 05:32:01       60 阅读
  9. Python程序打包成exe可执行文件说明

    2024-01-24 05:32:01       49 阅读
  10. 使用Flink的所有pom文件

    2024-01-24 05:32:01       48 阅读
  11. 设计一个Call Center

    2024-01-24 05:32:01       57 阅读