首页 > 其他分享 >738.单调递增的数字 monotone-increasing-digits

738.单调递增的数字 monotone-increasing-digits

时间:2022-11-21 15:57:34浏览次数:71  
标签:digits 数字 int monotone while res 738 dec size

问题描述

738.单调递增的数字

解题思路

将该数字的每一位数字变成数组dec<int>的一部分,然后依次遍历,直到dec[i] > dec[i + 1],然后将dec[i + 1]及以后的数字都变成9,如果dec[i] == dec[i - 1] == ··· == dec[j],就将dec[j]--,其余全设置为9。

代码

class Solution {
private:
    void vec_dec(int n, vector<int> &res) {
        while (n != 0) {
            res.push_back(n % 10);
            n = n / 10;
        }
    }
    int ten(int i) {
        int res = 1;
        while (i != 0) {
            i--;
            res *= 10;
        }
        return res;  
    }
public:
    int monotoneIncreasingDigits(int n) {
        vector<int> dec;
        vec_dec(n, dec);
        std::reverse(dec.begin(), dec.end());
        if (dec.size() <= 1)
            return n;
        for (int i = 0; i < dec.size() - 1; i++) {
            if (dec[i] > dec[i + 1]) {
                // dec[i] = dec[i + 1];
                int j = i + 1;
                int k = i - 1;
                while (j < dec.size())
                    dec[j++] = 9;
                while (i > 0 && dec[i] == dec[i - 1])
                    dec[i--] = 9;
                if ((i > 0 && dec[i] > dec[i - 1]) || i == 0)
                    dec[i] = dec[i] - 1;
                break;
            }      
        }
        int sum = 0;
        for (int i = 0; i < dec.size(); i++) {
            sum += dec[i] * ten(dec.size() - i - 1);
        }
        return sum;
    }
};

标签:digits,数字,int,monotone,while,res,738,dec,size
From: https://www.cnblogs.com/zwyyy456/p/16911615.html

相关文章

  • Codeforces 1738 / Codeforces Global Round 22
    目录ContestLinkProblemAGloryAddictsProblemBPrefixSumAddictsProblemCEvenNumberAddictsProblemDPermutationAddictsProblemEBalanceAddictsProblemF......
  • 数组~Count digits from a text stream
    题目描述Countdigits,whitespaces(‘’,’\n’,’\t’)andothercharactersfromatextstreamendingwithEOF.输入AtextstreamendingwithEOF输出Pr......
  • CF1738F Connectivity Addicts
    CF1738FConnectivityAddicts给定\(n\)个点的度数,你需要在\(n\)次询问内给出一种涂色方案,使得每个颜色都满足\(s_c\leqn_c^2\),其中\(s_c\)表示所有点的度数和,......
  • iPhone14 Pro Max逻辑板零部件:338S00738音频编解码器 LM3567A1 LED 闪光灯驱动器
    近期,iFixit对苹果最新iPhone14的拆解终于完成了,认为这次iPhone14最值得点赞的不是更强的处理器,也不是卫星SOS功能和更大的摄像头,而是完全重新设计的内部结构——显示面......
  • FZU 2105 Digits Count
     Problem2105DigitsCountAccept:444    Submit:2139TimeLimit:10000mSec    MemoryLimit:262144KB ProblemDescriptionGivenNintegersA={A[0],A......
  • 1738C-Even Number Addicts - dp, games, greedy
      voidsolve(){intn;cin>>n;intodd=0,even=0;for(inti=0;i<n;i++){inta;cin>>a;if(a&1)odd++;elseeven+......
  • CF1738 E. Balance Addicts
    https://codeforc.es/contest/1738/problem/E考虑回文的构造最典的一定是2边向中间不断扩展的形式,这启发我们从这个方面着手思考。考虑\(f(l,r)\)为区间\([l,r]\)......
  • CF1738H Palindrome Addicts
    题意初始有一个空字符串\(s\)。给定\(q\)组操作,每次操作是在\(s\)后加一个字符或是在\(s\)前删一个字符。每次操作后要输出\(s\)中本质不同回文子串数。数据......
  • 【738】latex实现bullet 及 文字加粗斜体
    参考:latex文字加粗、斜体参考:LaTeX中实心圆点列表的一点经验bullets:黑色点\begin{itemize}\item[$\bullet$]文字内容\end{itemize}circ:白色黑边点\begin{itemize}......
  • leetcode738-单调递增的数字
    单调递增的数字贪心算法先对数字进行遍历,找出从零开始单调递增的子序列。如果此时i小于数组长度,意味着数组不是全部递增的,需要对数组进行修改。那么让i从后向前进行遍......