Leetcode 第 402 场周赛题解

手把手教你用VM实现欧姆龙PLC数据采集(含Fins协议配置详解) 本文详细介绍了如何使用VM(VisionMaster)实现与欧姆龙PLC的数据采集,重点解析了Fins协议(包括Fins TCP/UDP)的配置步骤。从网络环境搭建、PLC的IP地址设置,到VM端Fins通讯通道的详细配置与数据点映射,提供了完整的实战指南。文章还涵盖了数据收发解析、常见问题排查清单,帮助工程师快速完成视觉系统与PLC的稳定集成。 阅读详情

Leetcode 第 402 场周赛题解

题目1:3184. 构成整天的下标对数目 I

思路

统计满足 i < j 且 hours[i] + hours[j] 构成整天的下标对 i, j 的数目。

构成整天的条件:(hours[i] + hours[j]) % 24 == 0。

代码

/*
 * @lc app=leetcode.cn id=3184 lang=cpp
 *
 * [3184] 构成整天的下标对数目 I
 */

// @lc code=start
class Solution
{
public:
    int countCompleteDayPairs(vector<int> &hours)
    {
        int n = hours.size();
        int count = 0;
        for (int i = 0; i < n - 1; i++)
            for (int j = i + 1; j < n; j++)
                if ((hours[i] + hours[j]) % 24 == 0)
                    count++;
        return count;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n2),其中 n 是数组 hours 的长度。

空间复杂度:O(1)。

题目2:3185. 构成整天的下标对数目 II

思路

本质思路类同经典的“两数之和”。枚举右,用哈希表维护左。

枚举 j,并维护 cnt[x] 表示所有满足 i < j 的下标 i 中,有几个 hours[i] 模 24 等于 x。设 y = nums[j] % 24,那么答案就是 sum(cnt[(24 - y) % 24])。

注意取余的存在,余 0 的情况要特殊处理。

代码

/*
 * @lc app=leetcode.cn id=3185 lang=cpp
 *
 * [3185] 构成整天的下标对数目 II
 */

// @lc code=start
class Solution
{
public:
    long long countCompleteDayPairs(vector<int> &hours)
    {
        vector<int> cnt(24, 0);
        long long ans = 0LL;
        for (int &hour : hours)
        {
            hour %= 24;
            ans += cnt[(24 - hour) % 24];
            cnt[hour]++;
        }
        return ans;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n+M),其中 n 为数组 hours 的长度,M=24。

空间复杂度:O(M),M=24。

题目3:3186. 施咒的最大总伤害

思路

统计每个元素的出现次数,记到哈希表 cnt 中。将哈希表的 key 整理到数组 a 中,把 a 按照从小到大的顺序排序。

定义 dfs(i) 表示从 a[0] 到 a[i] 中选择,可以得到的伤害值之和的最大值。

考虑 a[i] 选或不选:

  • 不选:问题变成从 a[0] 到 a[i−1] 中选择,可以得到的伤害值之和的最大值,即 dfs(i)=dfs(i−1)。
  • 选:那么伤害值等于 a[i]−2 和 a[i]−1 的数不能选,问题变成从 a[0] 到 a[j−1] 中选择,可以得到的伤害值之和的最大值,其中 j 是最小的满足 a[j]≥a[i]−2 的数。那么 dfs(i)=dfs(j−1)+a[i]⋅cnt[a[i]]。

两种情况取最大值,得:dfs(i)=max⁡(dfs(i−1),dfs(j−1)+a[i]⋅cnt[a[i]])。

递归边界:dfs(−1)=0。没有数可以选,伤害值之和为 0。

递归入口:dfs(n−1),即答案。注意这里 n 是 a 的长度,即 power 中的不同元素个数。

代码

#
# @lc app=leetcode.cn id=3186 lang=python3
#
# [3186] 施咒的最大总伤害
#

# @lc code=start
class Solution:
    def maximumTotalDamage(self, power: List[int]) -> int:
        cnt = Counter(power)
        a = sorted(cnt.keys())

        @cache
        def dfs(i: int) -> int:
            if i < 0:
                return 0
            x = a[i]
            j = i
            while j > 0 and a[j - 1] >= x - 2:
                j -= 1
            res1 = dfs(i - 1) # 不选 a[i]
            res2 = dfs(j - 1) + x * cnt[x] # 选 a[i]
            return max(res1, res2)
        
        return dfs(len(a) - 1)
# @lc code=end

复杂度分析

时间复杂度:O(nlogn),其中 n 是 power 的长度。

空间复杂度:O(n),其中 n 是 power 的长度。

题目4:3187. 数组中的峰值

思路

为方便描述,把 nums 记作 a。

如果 1≤i≤n−2 且 a[i−1]<a[i]>a[i+1],那么把 a[i] 视作 1,否则视作 0。

如此转换后,操作 1 相当于计算从 l+1 到 r−1 的子数组的元素和。请注意,题目说的是「子数组」的第一个和最后一个不是峰值元素,注意是子数组,不是整个数组。

由于操作 2 要动态修改数组,我们可以用树状数组维护。

具体来说:

  1. 先把区间 [max⁡(i−1,1),min⁡(i+1,n−2)] 中的峰值元素从树状数组中去掉。
  2. 然后修改 a[i]=val。
  3. 最后再把区间 [max⁡(i−1,1),min⁡(i+1,n−2)] 中的峰值元素加入树状数组。

代码

/*
 * @lc app=leetcode.cn id=3187 lang=cpp
 *
 * [3187] 数组中的峰值
 */

// @lc code=start
class Fenwick
{
    vector<int> f;

public:
    Fenwick(int n) : f(n) {}

    void update(int i, int val)
    {
        for (; i < f.size(); i += i & -i)
        {
            f[i] += val;
        }
    }

    int pre(int i)
    {
        int res = 0;
        for (; i > 0; i &= i - 1)
        {
            res += f[i];
        }
        return res;
    }

    int query(int l, int r)
    {
        if (r < l)
        {
            return 0;
        }
        return pre(r) - pre(l - 1);
    }
};

class Solution
{
public:
    vector<int> countOfPeaks(vector<int> &nums, vector<vector<int>> &queries)
    {
        int n = nums.size();
        Fenwick f(n - 1);
        auto update = [&](int i, int val)
        {
            if (nums[i - 1] < nums[i] && nums[i] > nums[i + 1])
            {
                f.update(i, val);
            }
        };
        for (int i = 1; i < n - 1; i++)
        {
            update(i, 1);
        }

        vector<int> ans;
        for (auto &q : queries)
        {
            if (q[0] == 1)
            {
                ans.push_back(f.query(q[1] + 1, q[2] - 1));
                continue;
            }
            int i = q[1];
            for (int j = max(i - 1, 1); j <= min(i + 1, n - 2); ++j)
            {
                update(j, -1);
            }
            nums[i] = q[2];
            for (int j = max(i - 1, 1); j <= min(i + 1, n - 2); ++j)
            {
                update(j, 1);
            }
        }
        return ans;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O((n+q)log⁡n),其中 n 是数组 nums 的长度,q 是数组 queries 的长度。

空间复杂度:O(n),其中 n 是数组 nums 的长度,返回值不计入。

电镀技术:微型制造的原子级加法工艺与核心优势 电镀是一种利用电解原理在基材表面沉积金属层的表面处理技术,其本质是通过电场控制溶液中金属离子的迁移与还原,实现原子级的可控沉积。这一过程的核心在于对电流密度、温度、添加剂等参数的精密调控,从而实现对镀层结晶结构、性能的“编程”。从技术价值看,电镀作为一种“加法制造”工艺,在微观尺度上具有无与伦比的保形性和材料灵活性,能够实现复杂三维结构的均匀覆盖与功能复合。在应用场景上,它尤其契合现代微型化制造的需求,例如在集成电路的铜互连填充、高密度PCB板微孔金属化、MEMS传感器电极制备以及柔性电子器件制造中发挥着不 阅读详情

相关推荐

LLaMA-Factory全面指南:从训练到部署

LLaMA-Factory项目是一个专注于大模型训练、微调、推理和部署的开源平台。其主要目标是提供一个全面且高效的解决方案,帮助研究人员和开发者快速实现大模型的定制化需求。简化大模型训练流程:通过提供一系列预设的训练脚本和参数配置,降低用户在训练大模型时的技术门槛,使得即使是初学者也能轻松上手。增强模型微调能力:支持多种微调方法,如LoRA、QLoRA等,使用户能够根据特定任务需求对模型进行精细调整,从而提升模型性能。优化推理和部署体验。

全世界的博客 1万+

Leetcode3186. 施咒的最大总伤害

Leetcode3186. 施咒的最大总伤害

ProgramNovice的博客 596

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 742

【Leetcode】3186. Maximum Total Damage With Spell Casting

可以先汇总一下每个数出现次数,然后用动态规划求解。问选出数的最大总和是多少。,可以在其中选数,但是如果。

数学、算法爱好者的博客 769

解密HDMI热插拔检测电路:从HPD引脚到EDID读取的全流程避坑

本文深入解析HDMI热插拔检测与EDID读取的全流程,从HPD引脚信号特性、DDC通道I2C协议到EDID数据结构,系统剖析了硬件电路设计、信号完整性和软件协议中的常见陷阱与解决方案,为消费电子设备开发者提供了一套完整的实战避坑指南。

weixin_29291069的博客 647

1991-2020年气候背景数据集

2011 年,国家气象信息中心对 1951-2010 年 2400 余个地面站气温、气压、降水、湿度、日照等 19 大要素项的定时观测资料和日极值资料中由数字化过程中引起的系统性问题(例如数字化遗漏、整段拷贝等问题)进行质量检测、质量控制和错误数据的更正,形成较高质量的地面基础资料集。1991-2020年中国地面气候值数据集提供了中国2438个站点的气温、降水、气压、风向风速、相对湿度、水汽压、云、天气现象、能见度、蒸发、积雪、地温、冻土、日照共14个要素的气候背景信息。数据时间:30年平均。

地球资源数据云的官方博客 1597

动态规划--Day04--打家劫舍--740. 删除并获得点数,3186. 施咒的最大总伤害,2140. 解决智力问题

动态规划–Day04–打家劫舍–740. 删除并获得点数,3186. 施咒的最大总伤害,2140. 解决智力问题 今天要训练的题目类型是:【打家劫舍】,题单来自@灵艾山茶府。 掌握动态规划(DP)是没有捷径的,咱们唯一能做的,就是投入时间猛猛刷题。 动态规划要至少刷100道才算入门! 记忆化搜索是新手村神器。方便理解,写完之后可以转译成递推。 但是有些题目只能写递推,才能优化时间复杂度。熟练之后直接写递推也可以。

m0_60740070的博客 1034

从拆解图看懂空心杯电机:有刷 vs 无刷内部结构全解析(附DIY注意事项)

本文深入解析有刷与无刷空心杯电机的内部结构差异,通过高清拆解图展示关键部件工艺特点,并分享实用的维护技巧和检测方法。重点对比两种电机在效率、寿命和适用场景上的优劣,为DIY爱好者提供详细的注意事项和操作指南。

xgboost6farmer的博客 518

题解/算法 {3186. 施咒的最大总伤害}

1

qq_66485519的博客 341

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2512

LeetCode 第402场周赛个人题解

手速场,没整理过py的板子速度还是慢了,以后有机会整理一下吧

EQUINOX1的博客 714

23、关联挖掘到相关性分析及约束关联挖掘详解

本文详细解析了从关联挖掘到相关性分析的发展过程,以及基于约束的关联挖掘方法。文章介绍了传统支持-置信度框架的局限性,并引入Lift、χ2、All Confidence和Cosine等度量来评估规则的相关性。同时探讨了多种规则约束在数据挖掘中的应用机制及其优化效果,旨在提高挖掘效率和规则质量。最后结合实际案例说明如何综合运用相关性度量与规则约束以满足业务需求,并展望了数据挖掘技术的未来发展。

aa123的博客 103

【Leetcode第217场周赛】score:7 Time: 0:34:38 Rank:451/3744

题目看起来都会,一交就错 5613. 最富有客户的资产总量(3分,通过率:2900/3025) 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i​​​​​​​​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。 客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。 class Solution: def maximumWealth(self, accounts: List[L

木土木土木土的日常 276

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 316

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 366

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 593

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 22

26-下载中心按哈希分目录存文件

为解决大导出文件存储的扩展性与一致性问题,采用哈希分目录策略:以任务 key 前四位划分为两级子目录,结合安全文件名构建路径(如 a3/f9/a3f9c2e1..._orders.xlsx),实现文件分散存储。业务库仅保存任务状态与 key,下载中心通过内网接口接收文件流并管理持久化,支持无状态扩容。配合内存索引与定期清理作业,确保元数据与文件一致。该方案有效避免单目录膨胀、提升性能,并通过共享令牌控制访问,保障安全性。

CAthlete的博客 180

栈和队列和数组-优快云博客

一句话理解:栈就像一个羽毛球桶或手枪弹夹——只能从一头放、从一头取,最后放进去的最先拿出来。严格定义:栈是限定仅在某一端进行插入或删除操作的线性表。允许插入和删除的一端叫栈顶(top);另一端叫栈底(bottom);不含任何元素的栈叫空栈;栈中元素遵循后进先出(LIFO,Last In First Out)。两个核心动作插入数据叫入栈 / 进栈(Push);删除数据叫出栈(Pop)。⚠️ 易错点:栈只能在一端操作,不是两端。判断题里说「栈允许在两端操作」一定是错的。一句话理解。

2501_93853322的博客 169

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 344

从决策树到随机森林:Python机器学习里的“树形家族“深度实战与原理拆解

文章浏览阅读2.4k次,点赞52次,收藏32次。决策树和随机森林作为机器学习中的经典算法,各有优劣。决策树以其高可解释性和快速训练的特点

2601_96798011的博客 232

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 200

模拟实现 map 和 set —— 基于红黑树的复用设计

/ 三叉链,便于迭代器 -- / ++ 向上回溯T _data;Color _col;, _data(data), _col(RED) // 新结点默认红色{}设计决策目的收益模板参数T而非K, V让同一棵树同时容纳K和pair<K,V>一次实现,两处复用KeyOfT仿函数从T中抽出真正的 key 进行比较map 只以 key 排序,符合语义迭代器用nullptr表示 end结合"向祖先回溯"的++逻辑无需额外标记位,天然对齐Insert返回同时告知位置与是否新插。

2603_95728536的博客 508

【数据结构-2】顺序表的实现

线性表是一种数据结构,它分为逻辑结构和物理结构,在逻辑结构上线性表是呈线性的,数据是是连续存储的;在物理结构(物理空间)上,线性表不一定是连续存储的。线性表的实现,主要分为数组和链式结构。顺序表是线性表的一种实现方式,顺序表在逻辑结构和物理结构上都是连续的。顺序表的底层实现是数组。

weixin_44218929的博客 211

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 374
上一篇: Leetcode3186. 施咒的最大总伤害
下一篇: 关于 Please delete apps signed with your free account from this device to remain under the limit 的解决方法
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值