今天就一个题目,做完吃完饭抓紧做六级试题。
Leetcode 738. 单调递增的数字
题目链接 738 单调递增的数字
本题目思路还是比较巧妙的,对于98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。剩下还需要几个主要的点,在注释中会说明:
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string strNum = to_string(n);//这里是将int类型转化为字符串类型
int flag = strNum.size();//设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行,太强了
for(int i=strNum.size()-1;i>0;i--){
if(strNum[i-1]>strNum[i]){
flag = i;
strNum[i-1]--;
}
}
for(int i=flag;i
贪心小总结:
遇到贪心的题目做法就是怎么将利益做到最大化,从局部到整体利益最大化的一个过程
今天必须拿下六级