ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

738. Monotone Increasing Digits

2020-01-31 14:55:18  阅读:231  来源: 互联网

标签:Digits digits Increasing monotone sb 738 increasing nArray


/**
 * 738. Monotone Increasing Digits
 * https://leetcode.com/problems/monotone-increasing-digits/description/
 *
 * Given a non-negative integer N, find the largest number that is less than or equal to N with monotone increasing digits.
(Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits x and y satisfy x <= y.)
Example 1:
Input: N = 10
Output: 9
Example 2:
Input: N = 1234
Output: 1234
Example 3:
Input: N = 332
Output: 299
 * */
class Solution {
    fun monotoneIncreasingDigits(N: Int): Int {
        val nArray = N.toString().toCharArray()
        val size = nArray.size
        var j = size//用于记录要转换的位置
        for (i in size - 1 downTo 1) {
            if (nArray[i] >= nArray[i - 1]) {
                continue
            }
            //要找到从后往前遍历的最后一个值升高的位置,让前一位减1
            nArray[i - 1]--
            j = i
        }
        //并把当前位以及后面的所有位都变成9
        for (i in j until size) {
            nArray[i] = '9'
        }
        val sb = StringBuilder()
        for (item in nArray) {
            sb.append(item)
        }
        return sb.toString().toInt()
    }
}

 

标签:Digits,digits,Increasing,monotone,sb,738,increasing,nArray
来源: https://www.cnblogs.com/johnnyzhao/p/12245367.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有