乐清联科网站建设,做网站投广告攻略,点击图片预览 wordpress,投资建设个什么网站好今天是第33天刷leetcode#xff0c;立个flag#xff0c;打卡60天#xff0c;如果做不到#xff0c;完成一件评论区点赞最高的挑战。
算法挑战链接
738. 单调递增的数字https://leetcode.cn/problems/monotone-increasing-digits/
第一想法
题目理解#xff1a;找到一个…今天是第33天刷leetcode立个flag打卡60天如果做不到完成一件评论区点赞最高的挑战。
算法挑战链接
738. 单调递增的数字https://leetcode.cn/problems/monotone-increasing-digits/
第一想法
题目理解找到一个比n更小的最大单调递增的数字。
因为要求单调递增因此可能会出现 类似 3799998 这种需要修改的值在在第一个九的位置的这种情况。面对这种情况我一般采取的思路是使用另一个变量来记录第一个9的位置。
因此代码如下
class Solution {public int monotoneIncreasingDigits(int N) {char[] arr (N ).toCharArray();int max -1, idx -1;for (int i 0; i arr.length - 1; i) {if (max arr[i]) {max arr[i];idx i;}if (arr[i] arr[i 1]) {arr[idx] - 1;for(int j idx 1;j arr.length;j) {arr[j] 9;}break;}}return Integer.parseInt(new String(arr));}} idx这个变量是比较重要的他会记录最大值第一次出现的位置。如果符合条件 i的值比i1的值更大那么就会使用idx-1然后后面填充9。
看完代码随想录之后的想法
代码随想录的方法是找到最大值出现的最后一位然后通过减1的方式不断的回退idx的值最后找到第一个idx的值我感觉我的方法会更加简单和容易理解。
实现过程中遇到哪些困难
无
今日收获
有时候花掉一点点的空间换取更加简单粗暴的方式我认为是值得的