【LeetCode】每日一题 2024_1_22 最大交换(模拟)

LeetCode?启动!!!


几百年没有见到题目描述这么短的题目了,泪目了

题目:最大交换

题目链接:670. 最大交换

题目描述:

代码与解题思路

func maximumSwap(num int) int {
   
    s := strconv.Itoa(num)
    maxIdx := len(s)-1
    p_i, q_max := -1, 0
    for  i := len(s)-2; i >= 0; i-- {
   
        if s[i] > s[maxIdx] {
    // 持续更新最大的数
            maxIdx = i
        } else if s[i] < s[maxIdx] {
    // s[i] 右边有更大的值, 保存下来, 等最后的时候交换
            p_i, q_max = i, maxIdx
        }
    }
    if p_i == -1 {
    // 不需要交换
        return num
    }
    // 转换成 byte 数组, 然后交换位置
    t := []byte(s)
    t[p_i], t[q_max] = t[q_max], t[p_i]
    ans, _  := strconv.Atoi(string(t))
    return ans
}

这类题目在刚开始学刷算法题的时候还是挺常见的,可以直接用暴力来解答,但是纯暴力的话,代码量会比较多,而且复杂度也会比较高,通常容易出现用例有情况没考虑到,然后成为 if 仙人,代码充满 if else 语句

我们需要先在草稿纸(如果你可以脑内模拟就当我没说)上模拟一下,把情况都考虑上,然后正序遍历,倒序遍历的思路都走上一遍,看看哪种比较容易去实现,做好标志位

多遇到几次类似的这种题目,就能逐渐得心应手了

相关推荐

  1. LeetCode每日 | 670. 交换

    2024-01-25 13:06:03       60 阅读
  2. LeetCode每日】152. 乘积子数组

    2024-01-25 13:06:03       76 阅读
  3. LeetCode每日】2864. 二进制奇数

    2024-01-25 13:06:03       48 阅读
  4. 【力扣每日】力扣670交换

    2024-01-25 13:06:03       63 阅读

最近更新

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

    2024-01-25 13:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 13:06:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 13:06:03       82 阅读
  4. Python语言-面向对象

    2024-01-25 13:06:03       91 阅读

热门阅读

  1. 使用 git rebase 合并多个 commit

    2024-01-25 13:06:03       47 阅读
  2. openssl3.2/test/certs - 043 - 4096-bit leaf key

    2024-01-25 13:06:03       59 阅读
  3. v-if 导致 elementui 表单校验失效问题解决

    2024-01-25 13:06:03       51 阅读
  4. linux Socket 缓存 介绍

    2024-01-25 13:06:03       51 阅读
  5. 看完「繁花」我悟了:认真赚钱,终成大佬

    2024-01-25 13:06:03       63 阅读
  6. Git搭建

    Git搭建

    2024-01-25 13:06:03      52 阅读
  7. 《设计模式的艺术》笔记 - 状态模式

    2024-01-25 13:06:03       45 阅读
  8. C++高级编程——STL:list容器、set容器和map容器

    2024-01-25 13:06:03       43 阅读
  9. SpringMVC知识点简单规整

    2024-01-25 13:06:03       52 阅读