Leetcode 第 125 场双周赛题解

C++图论 连通图(可能有环)的层次。选取任意节点root,各节点到root的最短距离就是各节点的层次。显然root的层次是0。 阅读详情

Leetcode 第 125 场双周赛题解

题目1:3065. 超过阈值的最少操作数 I

思路

排序,lower_bound(nums.begin(), nums.end(), k) - nums.begin() 即为答案。

代码

/*
 * @lc app=leetcode.cn id=3065 lang=cpp
 *
 * [3065] 超过阈值的最少操作数 I
 */

// @lc code=start
class Solution
{
public:
    int minOperations(vector<int> &nums, int k)
    {
        sort(nums.begin(), nums.end());
        return lower_bound(nums.begin(), nums.end(), k) - nums.begin();
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(nlogn),其中 n 是数组 nums 的元素个数。

空间复杂度:O(1)。

题目2:3066. 超过阈值的最少操作数 II

思路

用一个最小堆模拟。

代码

typedef long long LL;

class Solution
{
public:
    int minOperations(vector<int> &nums, int k)
    {
        priority_queue<LL, vector<LL>, greater<>> pq;
        for (int &num : nums)
            pq.push((LL)num);

        int ans = 0;
        while (pq.top() < k)
        {
            LL x = pq.top();
            pq.pop();
            LL y = pq.top();
            pq.pop();
            pq.push(min(x, y) * 2 + max(x, y));
            ans++;
        }
        return ans;
    }
};

复杂度分析

时间复杂度:O(nlogn),其中 n 是数组 nums 的元素个数。

空间复杂度:O(n),其中 n 是数组 nums 的元素个数。

题目3:3067. 在带权树网络中统计可连接服务器对数目

思路

枚举每一个节点,计算通过该节点可连接的服务器对的数目。

举例,把 0 作为树根计算:

请添加图片描述

代码

/*
 * @lc app=leetcode.cn id=3067 lang=cpp
 *
 * [3067] 在带权树网络中统计可连接服务器对数目
 */

// @lc code=start
class Solution
{
public:
    vector<int> countPairsOfConnectableServers(vector<vector<int>> &edges, int signalSpeed)
    {
        // 对于树,节点数 = 边数 + 1
        int n = edges.size() + 1;
        // 建图
        vector<vector<pair<int, int>>> g(n);
        for (auto &edge : edges)
        {
            int x = edge[0], y = edge[1], weight = edge[2];
            g[x].push_back({y, weight});
            g[y].push_back({x, weight});
        }

        function<int(int, int, int)> dfs = [&](int x, int father, int pathSum) -> int
        {
            int cnt = pathSum % signalSpeed == 0;
            for (auto &[y, weight] : g[x])
            {
                if (y != father)
                    cnt += dfs(y, x, pathSum + weight);
            }
            return cnt;
        };

        vector<int> ans(n);
        for (int i = 0; i < n; i++)
        {
            int sum = 0; // 前面遍历的子树中符合要求的节点总数
            // 遍历子节点
            for (auto &[y, weight] : g[i])
            {
                int cnt = dfs(y, i, weight);
                // 乘法原理
                ans[i] += cnt * sum;
                sum += cnt;
            }
        }
        return ans;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n2),其中 n 是树的节点个数。

空间复杂度:O(n),其中 n 是树的节点个数。

题目4:3068. 最大节点价值之和

思路

树形 DP。

在这里插入图片描述

用「选或不选」思考。

对于以 x 为根的子树,考虑 x 和它的儿子 y 之间的边是否操作。

  • 定义 f[x][0] 表示 x 操作偶数次时,子树 x 的除去 x 的最大价值和。
  • 定义 f[x][1] 表示 x 操作奇数次时,子树 x 的除去 x 的最大价值和。

初始化 f[x][0]=0, f[x][1]=−∞。遍历并递归计算 x 的所有儿子,设当前遍历到的儿子为 y,

在这里插入图片描述

两种情况取最大值,有:

在这里插入图片描述

​

注意这两个转移是同时发生的。

最后答案为根节点对应的 r0。

代码

/*
 * @lc app=leetcode.cn id=3068 lang=cpp
 *
 * [3068] 最大节点价值之和
 */

// @lc code=start
class Solution
{
public:
    long long maximumValueSum(vector<int> &nums, int k, vector<vector<int>> &edges)
    {
        int n = nums.size();
        vector<vector<int>> g(n);
        for (auto &e : edges)
        {
            int x = e[0], y = e[1];
            g[x].push_back(y);
            g[y].push_back(x);
        }

        function<pair<long long, long long>(int, int)> dfs = [&](int x, int father) -> pair<long long, long long>
        {
            long long f0 = 0, f1 = LLONG_MIN; // f[x][0] 和 f[x][1]
            for (auto &y : g[x])
            {
                if (y != father)
                {
                    auto [r0, r1] = dfs(y, x);
                    long long t = max(f1 + r0, f0 + r1);
                    f0 = max(f0 + r0, f1 + r1);
                    f1 = t;
                }
            }
            return {max(f0 + nums[x], f1 + (nums[x] ^ k)), max(f1 + nums[x], f0 + (nums[x] ^ k))};
        };
        
        return dfs(0, -1).first;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 为数组 nums 的长度。

空间复杂度:O(n),其中 n 为数组 nums 的长度。

云计算系统等保测评对象和指标选取 参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。 阅读详情

相关推荐

Cadence Virtuoso里搞定斩波运放AC仿真:PSS+PAC保姆级设置避坑指南

然而,当工程师们尝试在Cadence Virtuoso环境中对这种特殊结构进行AC特性分析时,往往会遇到传统AC仿真方法失效的困境——这正是PSS(Periodic Steady-State)与PAC(Periodic AC)仿真组合大显身手的场景。实际项目中我们常采用"先快后精"的两步法:先用快速设置确认大体趋势,再针对关键频段进行精细仿真。例如某次设计迭代中,将harmonics从10增加到20后,发现在1MHz处的相位裕度估算误差达15°,这解释了之前样机测试时的振荡问题。

weixin_33508411的博客 453

LeetCode1283. 使结果不超过阈值的最小除数

力扣 解题思路: 1.暴力求解(超出时间限制) 注意向上取整 2.优化(二分查找) 代码1:暴力 class Solution { public: int smallestDivisor(vector<int>& nums, int threshold) { int sz = nums.size(); int div = ...

向未来❀去探索 的博客 360

还在用iReport 5.6.0?手把手教你用JasperSoft Studio 6.8.0设计报表(附JDK 11+兼容方案)

本文详细介绍了从iReport 5.6.0迁移到JasperSoft Studio 6.8.0的全过程,包括JDK 11+环境配置、项目迁移实战、高级特性应用及常见问题解决方案。帮助开发者高效完成报表生成工具的升级,提升开发体验和报表性能。

weixin_30687051的博客 407

Leetcode3066. 超过阈值的最少操作数 II

Leetcode3066. 超过阈值的最少操作数 II

ProgramNovice的博客 617

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 707

提升RAG效果:为何 JSON 格式远胜 Markdown?

在构建强大的 RAG (检索增强生成) 系统时,文档解析是至关重要的第一步。它直接影响着后续的检索效率和生成质量。在众多文档格式中,JSON (JavaScript Object Notation) 格式正逐渐展现出其相对于传统 Markdown 格式的巨大优势。本文将深入探讨 JSON 在 RAG 系统文档解析中的卓越之处,并结合具体案例,让你理解为何 JSON 才是构建下一代智能应用的更优选择。RAG 系统的核心目标是让模型能够利用外部知识库,生成更精准、更贴合实际的答案。

simoncool23的博客 2719

【换根法 并集查找 DFS LCA 割点 】3067. 在带权树网络中统计可连接服务器对数目|1909

给你一棵无根带权树,树中总共有 n 个节点,分别表示 n 个服务器,服务器从 0 到 n - 1 编号。同时给你一个数组 edges ,其中 edges[i] = [ai, bi, weighti] 表示节点 ai 和 bi 之间有一条双向边,边的权值为 weighti 。再给你一个整数 signalSpeed 。 如果两个服务器 a ,b 和 c 满足以下条件,那么我们称服务器 a 和 b 是通过服务器 c 可连接的 : a < b ,a != c 且 b != c 。 从 c 到 a 的距离是可以被 s

闻缺陷则喜何志丹 5111

android 14.0 去掉usb授权提示框 默认给予权限

在14.0的系统rom产品开发中,在进行iot关于插入usb设备的开发过程中,在插入usb设备时会弹出usb授权提示框,也带来一些不便, 这个需要默认授予USB权限,插拔usb都不弹出usb弹窗所以这要从usb授权相关管理页默认给与usb权限,接下来分析下 相关的实现功能流程

安卓兼职framework和app工程师的博客 2263

(nice!!!)LeetCode 3067. 在带权树网络中统计可连接服务器对数目(深度优先搜索dfs、树)

【代码】(nice!!!)LeetCode 3067. 在带权树网络中统计可连接服务器对数目(深度优先搜索dfs、树)

记录一些刷过的题并分享学习心得 569

【RT-DETR实战】112、NCNN模型转换与层实现支持:从模型文件到推理引擎的硬核实战

本文详细记录了将RT-DETR模型部署到NCNN框架的全过程及关键要点。作者首先遇到MultiHeadAttention等算子不支持的问题,通过ONNX中间转换和自定义层实现解决。文章具体介绍了PyTorch到NCNN的权重转换技巧、模型优化方法(包括量化和线程优化)以及调试经验,强调逐层对比输出、预处理检查和边界情况测试的重要性。最后分享了保持转换流程可复现性的实用建议,指出手动调试虽然耗时但能加深对模型的理解,体现了工程师在解决技术难题时的专业精神与成就感。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 44

EfficientNet 改进:添加混合卷积提取特征

混合卷积(Mixed Convolution)是一种在卷积神经网络(CNN)中结合多种卷积操作的策略,旨在通过融合不同卷积核大小或类型的卷积操作来提升模型的性能和灵活性。:例如标准卷积、深度可分离卷积(Depthwise Separable Convolution)、分组卷积(Grouped Convolution)等,可以在计算效率和特征提取能力之间取得平衡。混合卷积可以根据任务需求动态调整卷积操作的组合方式,适应不同的输入数据分布。:通过引入可学习的权重,动态调整不同卷积操作的贡献。

Henry的博客 661

第 125 场 LeetCode 双周赛题解

t4思维题直接罚坐..

xhchen的博客 1475

22、用户界面流程(UI Flow)全解析

本文全面解析了用户界面流程(UI Flow)的概念、创建步骤及其在系统设计中的应用。通过示例和操作步骤,详细介绍了如何确定屏幕范围、识别屏幕、创建过渡和标记触发器,并阐述了UI Flow在导航识别、验证、可用性优化、测试用例开发和需求推导中的重要作用。文章还结合问答系统案例,展示了UI Flow的实际应用价值,帮助读者深入理解并有效运用这一工具提升系统用户体验。

rice5的博客 155

LeetCode第125场双周赛个人题解

手速场

EQUINOX1的博客 615

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

leetcode 2024.03.02 第 125 场双周赛 题解

leetcode 2024.03.02 第 125 场双周赛 题解

weixin_43997780的博客 303

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LeetCode 第29场夜喵双周赛 题解

今天做项目迟了半个小时才开始,还好这次比赛难度比较简单,还是把四题秒了 文章目录a.去掉最低工资和最高工资后的工资平均值a.题目a.分析a.参考代码b.n 的第 k 个因子b.题目b.分析b.参考代码c.删掉一个元素以后全为 1 的最长子数组c.题目c.分析c.参考代码d.并行课程 IId.题目d.分析d.参考代码 a.去掉最低工资和最高工资后的工资平均值 a.题目 给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。 请你返回去掉最低工资和最高工

夢裡夢到醒不來的夢 648

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LeetCode面试经典150题:高效刷题与面试突破指南

算法与数据结构是计算机科学的核心基础,其原理与应用贯穿软件开发全生命周期。通过系统化的题目训练,开发者可以掌握时间复杂度分析、空间复杂度优化等关键技术能力,这在技术面试和工程实践中都至关重要。LeetCode面试经典150题精选了数组、链表、树、动态规划等高频考点,采用三遍刷题法等科学训练方法,能有效提升解题思维。结合动态规划、滑动窗口等热词技术,本文详解了从基础概念到面试实战的完整路径,特别适合准备互联网大厂算法面试的工程师参考学习。

weixin_30562507的博客 415

LeetCode刷题实战指南:从零到精通的系统方法论与工程实践

算法与数据结构是计算机科学的核心基础,其原理在于通过特定的逻辑与数学模型,高效地组织、存储和处理数据,以解决各类计算问题。掌握它们的技术价值在于能显著提升软件工程师的问题抽象、分析与解决能力,是构建高性能、可扩展系统的关键。在应用场景上,无论是面试求职、技术竞赛,还是日常开发中的性能优化、架构设计,扎实的算法功底都至关重要。本文聚焦于LeetCode这一主流算法练习平台,深入探讨如何通过系统化的路径规划、科学的解题方法论以及工程化的实践技巧,将算法学习从零散的知识点积累,转变为可复用的能力体系,从而有效应对

weixin_30861459的博客 591

动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100

将一个复杂问题拆分成多个规模更小的子问题,通过保存子问题的计算结果,避免重复计算,最终得到原问题的答案。先看一个经典问题。dp[i] = 以第 i 个元素结尾的最优结果例如最长递增子序列。最长递增子序列不一定以最后一个元素结尾,因此必须遍历整个数组取最大值。dp[i] = 前 i 个元素的最优结果这种情况下,最终答案通常就是dp[n]。关键在于理解 dp 数组的定义。动态规划的核心并不是背诵某个固定模板,而是建立正确的状态定义,并通过状态转移方程解决问题。dp[i] 或 dp[i][j] 表示什么?

zengjiajun2006的博客 883

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 187

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 214

力扣73 矩阵置零

该解法通过标记含0的行和列来实现矩阵置零。遍历矩阵,用布尔数组记录有0的行和列;再遍历一次,若当前行或列被标记,则置为0。时间复杂度O(mn),空间复杂度O(m+n)。

Pniubi的博客 33

Hash表:两数之和、字母异位词分组、最长连续序列 [力扣 Hot100]

三道高频哈希表应用题:两数之和(利用HashMap快速查找补数)、字母异位词分组(排序后作为键分组)、最长连续序列(通过HashSet去重并仅从序列起点扩展)。核心思想均为借助哈希结构优化查找效率,避免重复计算。同时提及双指针等其他解法思路,体现算法设计中“空间换时间”的典型策略。

2403_87560480的博客 226

LeetCode 3105.最长的严格递增或递减子数组:一次遍历

LeetCode 3105.最长的严格递增或递减子数组:一次遍历

<font color="Pink">Tisfy的博客</font> 182

LeetCode Hot 100 二叉树专题(三):BST 二叉搜索树与右视图(Java)

本专题主线:三题(98 / 230 / 199)共用两把钥匙——BST 的中序序列严格递增,以及遍历中的"层"与"深度"标记。看懂这两点,三题共用一套模板。 结构约定:每题统一分三部分——①题目分析与解题思路(含易错点辨析);②常见解法(附代码)及讲解;③知识点总结。

2401_88612756的博客 715

【双指针|LeetCode1089 复写零】巧用逆向思路,破解原地覆盖陷阱

LeetCode1089.复写零要求原地复写数组中的0,避免覆盖未读元素。正向遍历会因写入操作破坏后续数据,故不可行。正确解法为逆向双指针:先正向预处理确定目标末尾位置,再从后向前复写,遇0写两个0,非0则直接搬运。需特别处理0复写越界情况(仅保留一个0)。时间复杂度O(n),空间复杂度O(1),是原地数组操作的经典范例。

2602_95684935的博客 226
上一篇: 最简单的基于 FFmpeg 的 AVDevice 例子(读取摄像头)
下一篇: 最简单的基于 FFmpeg 的内存读写的例子:内存视频播放器
UestcXiye
博客等级 码龄8年 9031粉丝 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、付费专栏及课程。

余额充值