上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

【LeetCode】每日一题 2024

guduadmin444月前

文章目录

  • LeetCode?启动!!!
  • 题目:最大交换
    • 题目描述:
    • 代码与解题思路

      LeetCode?启动!!!

      【LeetCode】每日一题 2024,第1张

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

      题目:最大交换

      题目链接:670. 最大交换

      题目描述:

      【LeetCode】每日一题 2024,第2张

      代码与解题思路

      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 语句

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

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

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见自己梳头还扎头发  梦见小孩拉大便是什么预兆  做梦梦见海水涨潮冲来