zoukankan      html  css  js  c++  java
  • 670. 最大交换

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

    示例 1 :

    输入: 2736

    输出: 7236

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

    示例 2 :

    输入: 9973

    输出: 9973

    解释: 不需要交换。

    思路 使得高位(靠左的)的值更大

    s[i]与后面的最大值(若有多个最大值,则取位次最小的,靠右的),交换位置

     1/**
    2 * @param {number} num
    3 * @return {number}
    4 */

    5var maximumSwap = function(num) {
    6    var s = num.toString()
    7
    8    for(var i=0; i<s.length; i++) {
    9        var init = s[i]
    10        var max = init
    11        for(var j=i+1; j<s.length; j++) {
    12            if(s[j] > max) max = s[j]
    13        }
    14        if(max !== init) {
    15            s = s.replace(init, max)
    16            s = reverseString(s)
    17            s = s.replace(max, init) // 保证replace的是位次最小的
    18            s = reverseString(s)
    19            break
    20        }
    21    }
    22
    23    return Number(s)
    24}
    25
    26function reverseString(s){
    27    return s.split('').reverse().join('')
    28}
  • 相关阅读:
    阿里笔试题—战报交流
    2 基于梯度的攻击——PGD
    1 基于梯度的攻击——FGSM
    0 对抗样本
    自然语言处理 复习笔记 3
    自然语言处理 复习笔记 2
    自然语言处理 复习笔记 1
    GRU
    1*1卷积核的作用
    BP原理
  • 原文地址:https://www.cnblogs.com/rencoo/p/9735197.html
Copyright © 2011-2022 走看看