LeetCode weekly contest 143

一文详解脉搏血氧测量原理与方法 本文摘要:血氧饱和度(SpO2)是评估人体氧合功能的重要指标,反映血红蛋白携氧能力。其测量基于光电容积描记法(PPG),利用红光(660nm)和红外光(940nm)通过组织时的吸收差异计算。脉搏波特征与心血管状态相关,动脉硬化会影响波形特征。Masimo公司的信号提取技术(SET)通过并行算法有效解决了传统血氧仪在运动、弱灌注情况下的测量误差问题,显著提升了临床监测的准确性和可靠性。该技术已成为血氧监测的金标准,在降低误报率、缩短响应时间方面具有显著优势。 阅读详情

RankNameScoreFinish TimeQ1 (5)Q2 (5)Q3 (8)Q4 (8)
396 / 4272YoungForest141:01:140:11:380:28:380:56:14 1null

1103. Distribute Candies to People

Brute force. 模拟整个分配过程。

时间复杂度: O(sqrt(candies.size())). 因为1 + 2 + ... + n = n * (n + 1) / 2 = candies.size().
空间复杂度: O(num_people).

class Solution {
public:
    vector<int> distributeCandies(int candies, int num_people) {
        vector<int> ret(num_people, 0);
        int row = 0;
        while (candies > 0) {
            for (int i = 0; i < ret.size() && candies > 0; ++i) {
                ret[i] += min(candies, row * num_people + i + 1);
                candies -= min(candies, row * num_people + i + 1);
            }
            ++row;
        }
        return ret;
    }
};

1104. Path In Zigzag Labelled Binary Tree

利用2个算法

  • 如果是顺序编号的话,父节点编号为 子节点编号 / 2 向下取整。
  • 反序编号,可以转成顺序编号。

时间复杂度: O(log N),
空间复杂度: O(1).

class Solution {
    int getLevel(int label) {
        int level = 0;
        while (label > 0) {
            label >>= 1;
            ++level;
        }
        return level - 1;
    }
    int complete(int label, int level) {
        return (1<<(level + 1)) - 1 - label + (1<<level);
    }
public:
    vector<int> pathInZigZagTree(int label) {
        int n = getLevel(label);
        const int level = n + 1;
        // cout << level << endl;
        vector<int> ret(level);
        int true_label = label;
        if (n % 2 == 1) {
            true_label = complete(label, n);
        }
        ret[n] = true_label;
        for (int i = n - 1; i >= 0; --i) {
            ret[i] = ret[i + 1] / 2;
        }
        // for (int i = 0; i <= n; ++i) {
        //     cout << ret[i] << " ";
        // }
        for (int i = 0; i <= n; ++i) {
            if (i % 2 == 1)
                ret[i] = complete(ret[i], i);
        }
        return ret;
    }
};

1105. Filling Bookcase Shelves

回溯法 + 剪枝。
时间复杂度: O(2^N), 实际上因为剪枝会小的多。
空间复杂度: O(N).

class Solution {
    vector<vector<int>> local_min;
    int global_min = numeric_limits<int>::max();
    void backtracking(const vector<vector<int>>& books, const int shelf_width, int i, int current_level_height, int height_before, int width) {
        if (i >= books.size()) {
            global_min = min(global_min, current_level_height + height_before);
            return;
        }
        if (current_level_height + height_before >= global_min)
            return;
        const int w = books[i][0];
        const int h = books[i][1];
        if (local_min.at(i).at(width) <= height_before + max(current_level_height, h)) {
            return;
        }
        local_min.at(i).at(width) = height_before + max(current_level_height, h);
        if (w + width <= shelf_width) {
            backtracking(books, shelf_width, i + 1, max(current_level_height, h), height_before, width + w);
        }
        backtracking(books, shelf_width, i + 1, h, height_before + current_level_height, w);
    }
public:
    int minHeightShelves(vector<vector<int>>& books, int shelf_width) {
        const int n = books.size();
        local_min = vector<vector<int>> (n, vector<int> (shelf_width + 1, numeric_limits<int>::max()));
        backtracking(books, shelf_width, 0, 0, 0, 0);
        
        return global_min;
    }
};

实际上还可以通过DP解决该问题:Discuss

1106. Parsing A Boolean Expression

词法分析。
时间复杂度: O(N),
空间复杂度: O(N).

class Solution {
    // op: o not, 1 and, 2 or
    bool parseNot(const string& expression, int& i) {
        // cout << "parseNot (" << i << "): " << expression.at(i) << endl;
        ++i; // skip '('
        bool ret = parse(expression, i);
        ++i; // skip ')'
        return !ret;
    }
    bool parseAnd(const string& expression, int& i) {
        // cout << "parseAnd (" << i << "): " << expression.at(i) << endl;
        bool ret = true;
        while (expression.at(i) != ')') {
            ++i; // skip ',' or '('
            ret = parse(expression, i) && ret;  // Warning: ret 必需写到后面,在比赛过程中,由于我写到前面了。忽略了逻辑短路问题,一直wrong answer。功亏一篑。
        }
        ++i;    // skip ')'
        return ret;
    }
    bool parseOr(const string& expression, int& i) {
        // cout << "parseOr (" << i << "): " << expression.at(i) << endl;
        bool ret = false;
        while (expression.at(i) != ')') {
            ++i; // skip ',' or '('
            ret = parse(expression, i) || ret;
        }
        ++i;    // skip ')'
        return ret;
    }
    bool parse(const string& expression, int& i) {
        // cout << "parse (" << i << "): " << expression.at(i) << endl;
        char head = expression.at(i);
        switch (head) {
            case 't':
                ++i; // skip 't'
                return true;
            case 'f':
                ++i;
                return false;
            case '!':
                ++i;
                return parseNot(expression, i);
            case '&':
                ++i;
                return parseAnd(expression, i);
            case '|':
                ++i;
                return parseOr(expression, i);
            default:
                cout << "error: " << head << endl;
                return false;
        }
    }
public:
    bool parseBoolExpr(string expression) {
        int pos = 0;
        return parse(expression, pos);
    }
};
核心组件大换血:Backbone与Neck魔改篇:YOLO26结合StarNet结构:2026星状网络在YOLO生态的即插即用实战 本文将介绍如何将StarNet作为Backbone替换YOLO26原生架构,以提升边缘设备上的目标检测性能。文章首先分析了YOLO26在特定场景下的精度瓶颈,指出其通用Backbone设计存在不足。随后深入解析StarNet的核心创新——星操作(Star Operation),这一低维计算却能获得高维特征表达的数学魔术,以及其极简的StarBlock模块设计。通过对比YOLO26原生架构的三大创新与痛点,作者提出两种替换策略:完整替换Backbone或局部替换+Neck联调。文中提供了StarNet核心代码 阅读详情

相关推荐

我用WorkBuddy“克隆“了一个我,从此每句话像我自己说的

各位,做这件事花了多长时间?准备样本可能要半小时,提炼风格十分钟,保存固化再花十分钟。加起来不到一个小时。但这一个小时之后呢?你就拥有了一个"永远在线的文字替身"。以后写口播稿,打开WorkBuddy跟它说;写课程逐字稿,跟它说;写公众号文章,也跟它说。写出来的东西,你的学员一看——“嘿,这不就是翟猛老师说的嘛。说到这儿,可能有人会问:老师,我的风格有那么重要吗?AI写的不都挺好的吗?各位你想想看,你为什么愿意听某个老师的课?不只是因为他讲的内容好,更是因为你喜欢他讲话的方式。

weixin_39284145的博客 822

21-5-21 不相交的线

不相交的线 难度[中等] 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i] == nums2[j] 且绘制的直线不与任何其他连线(非水平线)相交。 请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。 以这种方法绘制线条,并返回可以绘制的最大连线数。 示例 1: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(im.

Harswlgb的博客 171

告别编译噩梦:Vcpkg+Cmake一站式集成Tesseract-OCR C++开发环境(Windows)

本文详细介绍了如何在Windows系统上使用Vcpkg和CMake快速集成Tesseract-OCR C++开发环境,解决传统编译过程中的依赖问题。通过一键安装和自动化配置,开发者可以高效搭建OCR识别系统,支持中英文识别,并提供了常见问题的解决方案和进阶技巧。

weixin_29009339的博客 231

LeetCode 1035. 不相交的线 做题小结

题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1: 输入:A = [1,4,2], B = [1,2,4] 输出:2 解释: 我们可以画出两条不交叉的线,如上图所示。 我们无法画出第三条不相交的直线,因为从 A[1]=4 到 B[2]=4 的直线将与从 A[2]=2 到

阿拉修 2705

Oracle Linux中/var/log/pcp/pmlogger目录膨胀问题分析与解决

本文详细分析了Oracle Linux系统中/var/log/pcp/pmlogger目录异常膨胀的常见原因与解决方案。当PCP性能监控框架的pmlogger服务日志轮转或清理机制失效时,会导致该目录无限增长,威胁系统稳定。文章提供了从服务状态诊断、配置文件审查到安全清理与预防策略的全流程实战指南,帮助运维人员快速回收磁盘空间并恢复服务正常运行。

weixin_29208327的博客 373

二阶FLL辅助三阶PLL环路的代码解读

今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD

LWN7321的博客 2631

随想录Day53--动态规划: 1143.最长公共子序列 ,1035.不相交的线 , 53. 最大子序和

1143.最长公共子序列,这题要画一个二维数组,用两层for循环来遍历每个字符,从而比较是否相等。用dp[i][j]来表示当遍历到text2的第i个字符和text1的第j个字符时,最长的公共子序列为多少。比如说两个字符串(“abcde”和“ace”),以abcde为列,ace为行,就是3行5列的数组。这时到了dp[1][1]时,表示的就是(“ab”和“ac”)的最长公共子序列。

weixin_46516575的博客 579

告别同质化!用PyTorch Geometric手把手实现RGCN处理多关系图数据(附实战代码)

本文详细介绍了如何使用PyTorch Geometric实现关系图卷积网络(RGCN)处理多关系图数据,特别适用于社交网络分析、推荐系统等场景。通过实战代码演示了从数据加载、模型构建到训练优化的完整流程,帮助开发者高效处理异构图数据,提升模型性能。

weixin_30781433的博客 259

刷题DAY53 | LeetCode 1143-最长公共子序列 1035-不相交的线 53-最大子序和

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

wangs29的博客 760

【Unity优化篇】| Unity3D场景 常用优化策略,遮挡剔除、层消隐距离技术 和 LOD多层次细节

本篇文章来简单介绍一下 Unity中几种常用3D场景优化策略 方法 对于整个项目来说,本文中出现的方法也只是冰山一角,慢慢积累学习吧! 内容包括遮挡剔除(Occlusion Culling)、层消隐距离技术 和 LOD多层次细节

努力前行,总会成为自己心中的那道光 1万+

PyTorch深度学习实战(1)——神经网络与模型训练过程详解

在本节中,我们将了解传统机器学习与人工神经网络间的差异,并了解如何在实现前向传播之前连接网络的各个层,以计算与网络当前权重对应的损失值;实现反向传播以优化权重达到最小化损失值的目标。并将实现网络的所有关键组成——前向传播、激活函数、损失函数、链式法则和梯度下降,从零开始构建并训练了一个简单的神经网络。

盼小辉丶的博客 9万+

力扣OJ(1001-1400)

。。。

nameofcsdn的博客 3651

Ardupilot无人船(车)mavros自主控制

rover 4.4。

超维空间科技的博客 3230

Leetcode进阶之路——Weekly Contest 143

1103. Distribute Candies to People 给定两个整数,分别表示糖果数和人数,按顺序给第i个人分配i+1个糖果,若第二个循环,则给第i个人i + 1 + N个糖果 返回最后每个人拥有的糖果数 直接初始化整个数组,然后遍历一遍即可 class Solution { public: vector<int> distributeCandies(int c...

MaloFleur 308

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

记LeetCode第143次周赛(Weekly Contest 143)

上午打完LeetCode第143次周赛,发现很多不常用的知识点都比较生涩了,最后一个半小时也只ac了前两题。这一次的题目相对以往还是比较简单吧,但奈何就是迟迟没有在代码上有较满意的实现。学习果然是不进则退呢。据说把自己的学习过程记录下来会加深印象,说不定还能得到论坛大佬的指点。嗯,大学毕业之际,我要开始在这里记录自己的学习历程。 第一题:糖果分发: leetcode原题目如下 这题属于简单题,...

破晓的成长之路 383

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

为什么LeetCode官方难度标签不够用?leetcode_problem_rating竞赛题目难度评级工具完整解读

leetcode_problem_rating 是一款 **LeetCode 竞赛题目难度评级工具**,基于 Elo 评分系统 + 最大似然估计,为每道 LeetCode 周赛/双周赛题目算出一个精确到小数的难度分数。一个数字就能告诉你任意竞赛题的真实难度,比官方 Easy/Medium/Hard 三档标签实用得多,每周自动更新数据 📊 ## 一、官方 Easy/Medium/Hard 标签为

gitblog_00052的博客 802

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode_problem_rating用户完全指南:关键词搜索、评分区间过滤与自定义排序4大核心功能详解

📊 leetcode_problem_rating 是一个基于 **Elo 评分系统**为 LeetCode 周赛/双周赛题目计算难度分数的开源 Web 工具。它能帮你快速找到"某分数段"、"某场竞赛"、"某关键词"下的题目,适合刷题选手精准选题。本文带你用 10 分钟掌握它的 4 大核心功能。 --- ## 项目简介:它是什么? 这个项目的前端界面会把 LeetCode 历次周赛(Wee

gitblog_00649的博客 830

LeetCode-Python-1035. 不相交的线

我们在两条独立的水平线上按给定的顺序写下A和B中的整数。 现在,我们可以绘制一些连接两个数字A[i]和B[j]的直线,只要A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1: 输入:A = [1,4,2], B = [1,2,4] 输出:2 解释: 我们可以画出两条不交叉...

Keep Coding 2711

JAVA程序设计:不相交的线(LeetCode:1035)

我们在两条独立的水平线上按给定的顺序写下A和B中的整数。 现在,我们可以绘制一些连接两个数字A[i]和B[j]的直线,只要A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1: 输入:A = [1,4,2], B = [1,2,4] 输出:2 解释: 我们可以画出两条不交叉的线,如上图所示。 我们无法画出第三条不相交的直线,因为从 A[1]=4 到 B[2]=4 的直线将与从 A[2]...

信仰.的博客 2612

1035. 不相交的线

我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1: 输入:A = [1,4,2], B = [1,2,4] 输出:2 示例 2: 输入:A = [2,5,1,2,5],...

qq_40836518的博客 1569

刷题66(力扣3道题-动态规划)

103.编辑距离 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/edit-distance 题目描述 给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 = “ho...

明媚 1000

【leetcode_week134】边框着色_不相交的线_逃离大迷宫

移动石子直到连续 边框着色 不相交的线 逃离大迷宫 https://leetcode-cn.com/contest/weekly-contest-134 移动石子直到连续 描述 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位...

ZhangDanzhu的博客 1357

[LeetCode] 1035、不相交的线

题目描述 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,要求 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。以这种方法绘制线条,并返回我们可以绘制的最大连线数。 输入:A = [1,4,2], B = [1,2,4] 输出:2 解题思路 动态规划题目,此题同“最长公共子序列”。 ...

aift的专栏 3431

LeetCode1035. 不相交的线

LeetCode1035. 不相交的线题目说明题目分析参考代码 题目说明 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1 输入:A = [1,4,2], B = ...

坚果 5769

leetcode-动态规划

最长上升序列篇 解法一:动态规划 解题思路: 状态定义: dp[i]的值代表 nums 前 i个数字的最长子序列长度。 转移方程: 设 j∈[0,i),考虑每轮计算新 dp[i]时,遍历 [0,i)列表区间,做以下判断: 当 nums[i] > nums[j]时: nums[i]可以接在 nums[j] 之后(此题要求严格递增),此情况下最长上升子序列长度为 dp[j] + 1; 当 nums[i]<=nums[j] 时: nums[i]无法接在nums[j] 之后,此情况上升子序列...

codingToMaster的博客 818

LeetCode 1035. 不相交的线(最长公共子序列DP)

文章目录1. 题目2. 解题 1. 题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。 以这种方法绘制线条,并返回我们可以绘制的最大连线数。 示例 1: 输入:A = [1,4,2], B = [1,2,4] 输出:2 解释: 我们可以画出两条不交叉的线,如上图所示。 我们无法画出第三条不相交的直线, 因为从 A[1]=4 到 B[2]

Michael是个半路程序员 1082
上一篇: LeetCode weekly contest 140
下一篇: LeetCode weekly contest 150
YoungForest
博客等级 码龄10年 5粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值