代码随想录算法训练营DAY37| 56. 合并区间、738.单调递增的数字、968.监控二叉树、总结

机器学习算法全景手稿:按图索骥,手写三大类六大算法 任务类型算法名称核心优势致命短板适用数据场景分类逻辑回归概率解释强、训练极快线性边界,无法处理复杂非线性金融风控、点击率预估分类KNN无训练过程、多分类友好预测极慢、内存占用大小样本图像识别、推荐初筛分类SVM高维有效、泛化能力强(核技巧)百万级样本训练极慢、调参复杂文本分类、人脸检测分类决策树可解释性极强、可处理缺失值极其容易过拟合(需剪枝)医疗诊断、规则提取回归线性回归计算简单、可解释性强对异常值敏感、假设线性关系房价预测、销量预测聚类K-Means。 阅读详情

56.合并区间

class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        intervals.sort(key = lambda x:x[0])
        i=0
        
        while i<len(intervals)-1:
            if intervals[i][1]>=intervals[i+1][0]:
                intervals[i][0]=min(intervals[i][0], intervals[i+1][0])
                intervals[i][1]=max(intervals[i][1], intervals[i+1][1])
                intervals.remove(intervals[i+1])
            else:
                i=i+1

        return intervals

738.单调递增的数字

  • 题目链接:738.单调递增的数字
  • test343得到339:有一瞬间脑子转不过来,认为令第k-1位等于第k位会更大。。最大的方案还是令k-1位-1,后面所有位数都等于9。(贪心真的很像脑筋急转弯hhh
class Solution(object):
    def monotoneIncreasingDigits(self, n):
        """
        :type n: int
        :rtype: int
        """
        n_str = str(n)
        result = 0

        for k in range(len(n_str)-1, 0,-1):
            if n_str[k-1]>n_str[k]:
                n_str=n_str[:k-1]+str(int(n_str[k-1])-1)+'9'*(len(n_str)-k)

        return int(''.join(n_str))

968.监控二叉树

今天补了DAY36多出来的两题,这题先跳过,周六来补

总结

代码随想录算法训练营Day37|56.合并区间738.单调递增数字968.监控二叉树 和之前的思路类似,先创建一个ans二维数组,创建start和end来指明添加进入ans数组的区间下标,先对数组按照首元素排序从小到大排序后,根据当前元素是否小于下一个元素的第一个元素来决定将这个对ans数组进行增加、移动下标或改变end。具体代码如下。算法的时间复杂度为O(nlogn),空间复杂度为O(n)。代码随想录代码 阅读详情

相关推荐

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

思路及算法思维,指路。题目来自。day 37,周四,坚持~

day day up 653

leetcode 56合并区间

这道题你可以把它压缩成一个非常好记的思路:先排序,再逐个比较;能合并就扩右边界,不能合并就加入答案。具体来说,先用: 把所有区间按照左端点从小到大排序。排序之后,我们只需要拿“当前区间”和 里最后一个已经合并好的区间比较。如果: 说明前一个区间的右端点比当前区间左端点还小,二者没有重叠: 所以直接: 如果不满足: 那就说明: 两个区间重叠,例如: 此时左端点不用动,只需要把右端点扩大: 所以整道题可以记成: 这道题容易忘的函数/语法 含义:对整个 排序。对于:

qq_63176310的博客 224

LeetCode 1. 两数之和 | 从暴力枚举到哈希表最优解 + 空间换时间思想全复盘

文章摘要 题目要求在数组中找到两数之和等于目标值的下标。核心思路是优化查找效率: 暴力法:双重循环枚举所有数对,时间复杂度O(n²),效率低但易实现。 哈希表优化:利用哈希表O(1)查找特性,遍历时存储已访问元素,每次计算差值并查询,时间复杂度降至O(n)。关键细节是先查后存,避免自匹配。 代码实现:哈希表法通过一次遍历完成,空间换时间,边界处理需注意空数组和不足两元素的情况。 常见错误:内层循环起始点、哈希表键值设计、立即返回结果等易错点需警惕。 面试要点:优先选择哈希表解法,解释与暴力法的差异,强调时间

yc2284238579的博客 230

算法日常・每日刷题--<BFS>4

题目摘要: 给定一个由'X'和'O'组成的矩阵,要求捕获所有被'X'完全包围的'O'区域(即不与边界连通的区域),并将其替换为'X'。解法核心是逆向处理: 标记边界连通区域:遍历矩阵四边,对边界上的'O'进行BFS/DFS,标记所有与之连通的'O'为临时符号(如'.'),表示这些区域未被包围。 批量修改:遍历整个矩阵,将未被标记的'O'(被包围的)改为'X',同时恢复标记的'.'为'O'。 示例: 输入: [['X','X','X','X'], ['X','O','O','X'], ['X','X','O'

2503_92261635的博客 246

百日算法修炼 · Day 10

本文介绍了8个算法练习,涵盖链表、栈、队列和递归等核心数据结构与操作。主要内容包括:反转单链表(指针修改顺序)、删除指定节点(虚拟头节点技巧)、双端队列模拟栈和队列、环形数组队列实现、O(1)获取最小值的栈设计、两个栈实现队列(延迟倒数据)、两个队列实现栈(保留最后一个元素),以及递归求解区间最大值(分治思想)。每个练习都强调关键思维:指针操作需先保存后继、数据结构可以互相模拟、递归要拆解大问题为小问题。建议先独立完成练习再对照参考答案,重点关注指针顺序、状态维护和问题分解能力。

linux_hzh的博客 596

10.LeetCode算法习题讲解--滑动窗口--最大连续为一的个数

利用滑动窗口解决最大连续1的个数

Jammy_1的博客 195

问答大模型技术方案算法实现-RAPTOR树构建算法与BEG集成使用

算法核心特点 递归聚类:逐层对文档块进行聚类,构建层次结构摘要生成:为每个聚类生成摘要,捕获语义信息展开树检索:将所有节点展开,直接进行向量检索层次化检索:从根节点开始,逐层深入检索灵活聚类:支持层次聚类和基于阈值的聚类自适应:根据节点数量动态调整树结构可扩展:支持自定义摘要生成器和检索策略

qq_42773521的博客 187

环中最长子串字符成环找偶数O

如果 ‘o’ 出现的次数为奇数,则只能通过去掉一个字符(任意字符)来使得剩下的子字符串中的 ‘o’ 出现次数变为偶数。如果总共的 ‘o’ 个数已经是偶数,那么从字符串的任意位置开始到任意位置结束的子字符串,也一定能找到包含偶数次 ‘o’ 的最长子串,这个子串就是原字符串本身。最长子字符串是 “oxdolxl”,由于是首尾连接在一起的,所以最后一个 ‘x’ 和开头的 ‘l’是连接在一起的,此字符串包含 2 个’o’。如果 ‘o’ 出现的次数为偶数,那么整个字符串就符合题目的要求:即包含偶数次的 ‘o’。

KevinChen2019的博客 193

AI辅助芯片制造:算法与工程化落地

《国产DRAM龙头长鑫科技上市创纪录,AI技术重塑芯片制造新范式》 国产DRAM龙头企业长鑫科技7月27日登陆科创板,创下3.31万亿元市值,成为A股"一哥"。作为大陆唯一实现DRAM大规模量产的IDM企业,长鑫科技标志着国产存储产业的重要突破。随着AI算力需求激增,DRAM市场迎来高速发展期。AI技术正在深度改变芯片制造模式,在工艺仿真、缺陷检测、设备维护等环节发挥关键作用,显著提升良率和效率。长鑫科技高管推荐的新书《AI辅助芯片制造:算法与工程化落地》系统解析了AI赋能半导体制造的实战方案

weixin_43178406的博客 3885

二刷hot100-70.爬楼梯

dp数组初始化:dp[n+1];

2302_78497251的博客 41

算法武林谱:四大排序神功与二分寻宝术全解》

本文生动介绍了五大经典算法,通过趣味名称形象展现原理:1.快速排序(标杆劈叉法)- 分治思想,选标杆分区排序,平均O(nlogn);2.堆排序(金字塔淘汰赛)- 大顶堆构建与调整,稳定O(nlogn);3.归并排序(百川归海法)- 分治合并有序子数组,稳定O(nlogn)但需额外空间;4.希尔排序(缩步插缝法)- 改进插入排序,按步长分组排序;5.二分查找(折半寻宝术)- 有序数组折半查找,O(logn)高效。各算法均提供核心思想、步骤、复杂度分析和C++实现代码,可直接编译运行。

c23856的博客 373

S 曲线加减速算法完整详解(C# 原生实现,无第三方库)

S 曲线加减速是工业运动控制核心轨迹规划算法,相比梯形曲线,依靠约束加加速度 Jerk 实现加速度连续变化,有效消除机械冲击与振动。本文完整讲解七段式 S 曲线原理、阶段推演、时间预规划逻辑,剖析短行程自动裁剪等工程难点。提供无第三方依赖原生 C# 完整实现,内置运动状态机,支持正反方向运动,基于解析多项式实时求解位置、速度、加速度,无积分累积误差。代码可直接用于伺服上位机、模组轨迹发生器,亦可精简移植嵌入式平台。同时对比算法优劣与适用场景,适合工控开发、伺服调试、嵌入式运动算法学习者参考。

工业上位机开发工程师,专注C#底层算法与工控仪器开发。从零手写信号滤波、曲线拟合、机器视觉、排序与密码学哈希,纯原生实现零第三方库,附数学推导与可编译源码,可移植STM32/PLC。 928

Tokenization(分词算法):一切大语言模型的地基

本文深入解析了Tokenization(分词算法)这一大语言模型的基础技术。Tokenization将原始文本切分为模型可处理的子词单元并映射为数字ID,是模型理解文本的第一步。

2301_80194949的博客 186

STM32N6运行3A音频算法方法

STM32N6提供三种3A音频算法实现方案:1)利用Cortex-M55内核的Helium技术运行传统算法,支持800MHz主频和150条DSP指令;2)通过600GOPS NPU加速AI降噪等复杂算法;3)采用CPU+NPU混合架构实现最优性能。ST提供完整的开发工具链(STM32Cube.AI/X-CUBE-AI)和音频示例项目(STM32N6-GettingStarted-Audio),支持开发者灵活选择传统DSP处理、AI加速或混合方案。该芯片兼具800MHz主频CPU和专用NPU,能高效处理AGC

2401_89373706的博客 142

笔试强训 Day 44:最小差值、kotori 和素因子、dd 爱科学 1.0

笔试强训 Day 44:最小差值、kotori 和素因子、dd 爱科学 1.0

小雷的算法 blog 234

关于字符串【力扣151.反转字符串中的单词的思考】

【摘要】本文介绍了字符串反转问题的解决方案。通过三个关键步骤实现:首先去除多余空格,然后整体反转字符串,最后逐个反转单词。方法强调函数封装思想,将不同功能模块化处理。注意事项指出需特别关注函数封装在代码复用和维护中的重要性,这种分步处理方法能有效提高代码可读性和执行效率。

wasb666的博客 201

(AAAI 2024)SCIC:基于情境因果影响的协作多智能体强化学习

摘要 本文提出一种基于情境依赖因果影响的多智能体强化学习算法SCIC,解决传统互信息方法在稀疏奖励场景下因混淆统计相关性与真实因果性导致的协作效率低下问题。SCIC构建多智能体因果图模型(MACGM),通过因果干预和条件互信息估计量化智能体间情境依赖的因果影响力,并设计新型内在奖励机制。在捕食者-猎物等三类MPE任务上的实验表明,SCIC-MADDPG相比MADDPG、SI等基线算法具有更快的收敛速度和更高的累积奖励,显著提升了多智能体的协同探索能力。核心创新在于将因果推断引入MARL,通过区分不同情境下的

m0_59012280的博客 471

LeetCode 55. 跳跃游戏

这道跳跃游戏问题要求判断能否从数组起点跳到终点。解题关键在于维护当前可达的最远下标maxReach:遍历数组时,若当前位置i超过maxReach则失败;否则用i+nums[i]更新maxReach。例如[2,3,1,1,4]可达,而[3,2,1,0,4]不可达。贪心算法只需O(n)时间和O(1)空间,通过不断扩展可达范围来判断终点是否可达,而无需考虑具体跳跃路径。核心步骤是先检查当前位置是否可达,再更新maxReach。

zander258的博客 176
上一篇: 代码随想录算法训练营DAY36补| 435. 无重叠区间、 763.划分字母区间
下一篇: 代码随想录算法训练营DAY38| 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
阿緑
博客等级 码龄7年 178粉丝 · 60原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值