738.单调递增的数字
#include<bits/stdc++.h>
using namespace std;
int check(int nums)
{
int max = 10;
while(nums>0)
{
int t = nums%10;
if(max>=t)
{
max = t;
}
else
{
return 0;
}
nums = nums/10;
}
return 1;
}
int main()
{
int n;
cin >> n;
for(int i=n;i>=0;i--)
{
if(check(i))
{
cout << i << endl;
return 0;
}
}
return 0;
}
//暴力写法
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string s = to_string(n);//将数组转化为字符变量
int flag = s.size();//记录从哪里开始赋值为9
for(int i=s.size()-1;i>0;i--)
{
if(s[i-1]>s[i])//符合修改数据的条件
{
flag = i;
s[i-1]--;
}
}
for(int i=flag;i<s.size();i++)
{
s[i] = '9';
}
return stoi(s);
}
};
这道题目的俩种写法,各有所优,贪心为主