738专题

【代码随想录算法训练Day37】LeetCode 56.合并区间、LeetCode 738.单调递增的数字

Day37 贪心第五天 LeetCode 56.合并区间 有了前两道题的经验,这道题思路就会很清晰。 这里的亮点是直接先把区间放进结果集里,然后直接在结果集里操作。 class Solution {public:vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<vector<int>> res;if(inte

【代码随想录】【算法训练营】【第37天】 [56]合并区间 [738]单调递增的数字 [968]监控二叉树

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 37,周四,坚持~ 题目详情 [56] 合并区间 题目描述 56 合并区间 解题思路 前提:判断区间是否重合。 思路:按照左边界从小到大排序,遍历区间,判断区间是否有重叠,重叠区间合并。 重点:判断区间重合。 代码实现 C语言 贪心思维 按照左边界从小到大排序,遍历区间,判断区间是否有重叠,重

day 37 738.单调递增的数字

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。 示例 1: 输入: n = 10输出: 9 示例 2: 输入: n = 1234输出: 1234 示例 3: 输入: n = 332输出: 299 class S

leetcode打卡#day39 738. 单调递增的数字

738. 单调递增的数字 class Solution {public:int monotoneIncreasingDigits(int N) {string strNum = to_string(N);// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行int flag = strNum.size();for (int i =

算法训练营第三十九天 | LeetCode 738 单调递增的数字、LeetCode 968 监控二叉树

LeetCode 738 单调递增的数字 这题类似模拟,可以找出如下规律: 先将数字按位数从高位到低位存到一个整型数组中。在这个数组中,从左往右遍历,如果遇到一个两数相等,并且记录的这个变量之前没有赋过值,那么将前一个数的下标存放到该变量中。这是为了处理后一个数字需要减小造成前一个数字再次比后一个数字大的情况。当然,如果后面有一个数字比这两个数字都要大,那么这个变量就可以再次赋为-1了。如果在

代码随想录算法训练营第三十九天| 738.单调递增的数字 、968.监控二叉树、总结

738.单调递增的数字 题目链接:738.单调递增的数字 文档讲解:代码随想录/单调递增的数字 视频讲解:视频讲解-单调递增的数字 状态:已完成(1遍) 解题过程  看到题目的第一想法 这道题我的想法是从后往前遍历,如果此刻遍历的数字比前一位数字要小,那么此位数字及之后的位数的所有数字都得变成9,并且前一位数字要减一(如果是0那就也变9),至于再前一位不用管,遍历到前一位的时候会处

代码随想录训练营Day 39|力扣738.单调递增的数字、968.监控二叉树

1.单调递增的数字 代码随想录 代码:  class Solution {public: // 546 i-1 5 i 6int monotoneIncreasingDigits(int n) {string strNum = to_string(n);int flag = strNum.size();for(int i = strNum.size() - 1;i > 0;i--

day 38 435.无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树

435.无重叠区间 思路 为了使区间尽可能的重叠所以排序来使区间尽量的重叠,使用左边界排序来统计重叠区间的个数与452. 用最少数量的箭引爆气球恰好相反。 代码 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,b)->Integer.compare

day 1: 738. 单调递增的数字

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。 示例1: 输入:n = 10 输出:9 示例2: 输入:n = 1234 输出:1234 为了便于修改值,将其转化为数组。 List<Integer> nums = new ArrayLi

算法训练Day32 | 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字 class Solution {public:int monotoneIncreasingDigits(int n) {string n_str = to_string(n);int flag = n_str.size();for(int i=n_str.size()-2; i>=0; i--){if(n_str[i]>n_str[i+1]){n_str[i]--;fl

【算法刷题day37】Leetcode:738. 单调递增的数字、968. 监控二叉树

文章目录 Leetcode 738. 单调递增的数字解题思路代码总结 Leetcode 968. 监控二叉树解题思路代码总结 草稿图网站 java的Deque Leetcode 738. 单调递增的数字 题目:738. 单调递增的数字 解析:代码随想录解析 解题思路 这贪心有点巧,自己没想出来。从后往前遍历,如果遇到了比后面小的,就让当前数减一。遍历结束后,让修改

代码随想录算法训练营第三十七天|738.单调递增的数字,968.监控二叉树

目录 738.单调递增的数字思路代码 968.监控二叉树思路代码 738.单调递增的数字 题目链接:704. 二分查找 文档讲解:代码随想录 视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字 思路 数要尽可能的大,高位开始尽量不变,从低位开始找到不满足递减的第一个位置,当前位置减1,后面的全都变成9即可。 代码 class S

LC 738.单调递增的数字

738.单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x ≤ y x \leq y x≤y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。 示例 1: 输入: n = 10 输出: 9 示例 2: 输入: n = 1234 输出: 1234 示例 3: 输入: n = 332 输出:

代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结

一、LeetCode 738.单调递增的数字 题目链接/文章讲解/视频讲解:https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 状态:已解决 1.思路           如何求得小于等于N的最大单调递增的整数?98,一旦出现strNum

Day37|贪心算法part06:738.单调递增的数字、968. 监控二叉树、贪心总结

738. 单调递增的数字 总体思想就是从后往前遍历,比较第i位和第i+1位的大小,不符合顺序char[i]减1,i+1位填9,找到需要填9的最先位置,然后填9。 class Solution {public int monotoneIncreasingDigits(int n) {String s = String.valueOf(n);char[] chars = s.toCharArray

代码随想录算法训练营第三十七天|● 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字  class Solution {public:int monotoneIncreasingDigits(int n) {string a = to_string(n);int k = 0;for (int i = a.size() - 1; i > 0; i--) {if (a[i] < a[i - 1]) {k = i;a[i-1]--;}}cout <

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。 示例 1: 输入: n = 10输出: 9 思路: 假设这个数是98,n[i]>n[i+1],让n[i]--,n[i+1]=9,即98的单调递增数就是89 如果从前往后遍历,n[i

代码随想录算法训练营第三十七天| 738.单调递增的数字,968.监控二叉树,总结

题目与题解 参考资料:贪心总结 738.单调递增的数字 题目链接:738.单调递增的数字 代码随想录题解:738.单调递增的数字 视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili 解题思路:         一开始想复杂了,赋值的时候就手忙脚乱,看答案了。 看完代码随想录之后的想法          其实逻

算法训练营第37天|LeetCode 738.单调递增的数字 968.监控二叉树

LeetCode 738.单调递增的数字 题目链接: LeetCode 738.单调递增的数字 解题思路: 从后向前遍历,当不满足递增条件时,当前位置赋值为9,前一位减一。之后记录不满足位置,将后续全部赋值为9. 代码: class Solution {public:int monotoneIncreasingDigits(int n) {string str = to_string

【水果识别】基于matlab GUI柑橘质量检测及分级系统【含Matlab源码 738期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划(Matlab) 神经网络预测与分类(Matlab) 优化求解(Matlab) 语音处理(Matlab

代码随想录|Day31|贪心06|738.单调递增的数字

738.单调递增的数字 思路: 1. 从右向左遍历 从字符串的最后一位向前遍历,即从低位到高位进行检查。这是因为当我们修改某一位数字时,可能会影响到更低位的数字。 2. 检查并修改数字 在遍历过程中,如果发现当前位数字小于其前一位(即,前一位大于后一位,破坏了单调递增的规则),我们需要对前一位数字进行调整: 将前一位数字减1。将这一位及之后所有位数字设置为9。 class Solutio

代码随想录 Day37 738.单调递增的数字 968.监控二叉树

738.单调递增的数字  class Solution {public:int monotoneIncreasingDigits(int N) {string strNum = to_string(N);// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行int flag = strNum.size();for (int i

代码随想录训练营Day37:● 738.单调递增的数字 ● 968.监控二叉树 ● 总结

738.单调递增的数字 题目链接 https://leetcode.cn/problems/monotone-increasing-digits/description/ 题目描述 思路 从后往前遍历数字的每一位,如果前一位大于后一位,则将其减一,后边的一位取 i-9 中最大的 解答的两点疑惑: 1、用flag记录而不是直接将当前值赋为 9; 2、flag 赋初值为 字符串长

代码随想录算法训练营第36天|738.单调递增的数字|968.监控二叉树|总结

代码随想录算法训练营第36天|738.单调递增的数字|968.监控二叉树|总结 738.单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html class Solution {public:int monotoneIncre

Codeforces Round #738 (Div. 2) 题解

Codeforces Round #738 Div. 2 题解 A.Mocha and MathB. Mocha and Red and BlueC - Mocha and HikingD1. Mocha and Diana (Easy Version)D2. Mocha and Diana (Hard Version) A.Mocha and Math A.Mocha and

算法D37 | 贪心算法6 | 738.单调递增的数字 968.监控二叉树

738.单调递增的数字  代码随想录 Python: 尝试了下写成非string修改的,会复杂一点。 class Solution:def monotoneIncreasingDigits(self, n: int) -> int:str_num = list(str(n))for i in range(len(str_num)-1, 0, -1):if str_num[i-1] > str_