Leetcode 第 111 场双周赛题解

别让运放自激振荡!手把手教你用波特图分析反相放大电路的稳定性(附LTspice仿真) 本文详细解析了运算放大器在反相放大电路中的稳定性问题,通过波特图分析和LTspice仿真,揭示了自激振荡的成因及解决方案。文章从故障现象识别到数学工具应用,再到实战仿真和工程优化,提供了一套完整的稳定性分析工具链,帮助工程师有效避免运放自激振荡问题。 阅读详情

Leetcode 第 111 场双周赛题解

题目1:2824. 统计和小于目标的下标对数目

思路

两层循环搞定。

代码

/*
 * @lc app=leetcode.cn id=2824 lang=cpp
 *
 * [2824] 统计和小于目标的下标对数目
 */

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

复杂度分析

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

空间复杂度:O(1)。

题目2:2825. 循环增长使字符串子序列等于另一个字符串

思路

设置两个指针 i 和 j,分别指向字符串 str1 和 str2 的第一个字符。

双指针遍历 str1[i] 和 str2[j],如果 str1[i] 可以匹配 str2[j],那么 i 和 j 都加一,否则只有 i 加一。

匹配的含义是 str1[i] 等于 str2[j],或者 str1[i] 循环递增的下一个字符等于 str2[j]。

如果 j 等于 str2 的长度,则返回 true,否则返回 false。

代码

/*
 * @lc app=leetcode.cn id=2825 lang=cpp
 *
 * [2825] 循环增长使字符串子序列等于另一个字符串
 */

// @lc code=start
class Solution
{
public:
    bool canMakeSubsequence(string str1, string str2)
    {
        // 特判
        if (str1.length() < str2.length())
            return false;
        if (str1 == str2)
            return true;

        int len1 = str1.length(), len2 = str2.length();
        int i = 0, j = 0;
        for (int i = 0; i < len1; i++)
        {
            if (match(str1[i], str2[j]))
                j++;
            if (j == len2)
                return true;
        }
        return false;
    }
    // 辅函数 - 判断字符 c1 和 c2 是否匹配
    bool match(char c1, char c2)
    {
        if (c1 == c2)
            return true;
        c1 = c1 == 'z' ? 'a' : char(c1 + 1);
        return c1 == c2;
        // return (c2 - c1 + 26) % 26 <= 1;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(len1 + len2,其中 len1 是字符串 str1 的长度,len2 是字符串 str2 的长度。

空间复杂度:O(1)。

题目3:2826. 将三个组排序

思路

最长递增子序列的变种题。

利用 Leetcode300. 最长递增子序列 的方法,求出数组 nums 的最长递增子序列 g,最后答案为 nums.size() - g.size()。

在这里插入图片描述

代码

/*
 * @lc app=leetcode.cn id=2826 lang=cpp
 *
 * [2826] 将三个组排序
 */

// @lc code=start
class Solution
{
public:
    int minimumOperations(vector<int> &nums)
    {
        // 特判
        if (nums.empty())
            return 0;

        int n = nums.size();
        vector<int> g; // 最长递增子序列
        for (int i = 0; i < n; i++)
        {
            int j = upper_bound(g.begin(), g.end(), nums[i]) - g.begin();
            if (j == g.size())
                g.push_back(nums[i]);
            else
                g[j] = nums[i];
        }
        return n - g.size();
    }
};
// @lc code=end

复杂度分析

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

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

题目4:2827. 范围中美丽整数的数目

思路

题解:数位 DP(Python/Java/C++/Go)

代码

/*
 * @lc app=leetcode.cn id=2827 lang=cpp
 *
 * [2827] 范围中美丽整数的数目
 */

// @lc code=start

// 数位 DP

class Solution
{
public:
    int numberOfBeautifulIntegers(int low, int high, int k)
    {
        return countBIfrom1toN(high, k) - countBIfrom1toN(low - 1, k);
    }
    // 辅函数 - 计算 [1, n] 的美丽整数的数目
    int countBIfrom1toN(int n, int k)
    {
        string s = to_string(n);
        int len = s.length(), memo[len][k + 1][len * 2 + 1];
        memset(memo, -1, sizeof(memo)); // -1 表示没有计算过

        function<int(int, int, int, bool, bool)> dfs;
        // 返回从 i 开始填数字,前面填的数字集合是 mask,能构造出的特殊整数的数目
        // diff: 奇数数位的数目 - 偶数数位的数目
        // is_limit 表示前面填的数字是否都是 n 对应位上的,
        // 如果为 true,那么当前位至多为 s[i],否则至多为 9
        // is_num 表示前面是否填了数字(是否跳过),
        // 如果为 true,那么当前位可以从 0 开始,否则当前位可以跳过,或者从 1 开始填数字
        dfs = [&](int i, int val, int diff, bool is_limit, bool is_num) -> int
        {
            if (i == len)
            {
                // 找到了一个合法数字
                return is_num && val == 0 && diff == len;
            }
            if (!is_limit && is_num && memo[i][val][diff] != -1)
                return memo[i][val][diff];
            int res = 0;
            if (!is_num)
            {
                // 可以跳过当前数位
                res = dfs(i + 1, val, diff, false, false);
            }
            // 如果前面填的数字都和 n 的一样,那么这一位至多填数字 s[i](否则就超过 n 啦)
            int up = is_limit ? s[i] - '0' : 9;
            // 枚举要填入的数字 d
            for (int d = 1 - is_num; d <= up; d++)
                res += dfs(i + 1, (val * 10 + d) % k, diff + d % 2 * 2 - 1, is_limit && d == up, true);
            if (!is_limit && is_num)
                memo[i][val][diff] = res; // 记忆化
            return res;
        };
        return dfs(0, 0, len, true, false);
    }
};
// @lc code=end

复杂度分析

在这里插入图片描述

Vercel静态站被墙别慌!手把手教你用Cloudflare免费CDN+域名解析搞定DNS污染 本文详细介绍了如何利用Cloudflare免费CDN和域名解析解决Vercel静态网站遭遇DNS污染的问题。通过诊断DNS污染、设计Cloudflare解决方案架构、实战配置步骤以及高级调优技巧,帮助用户快速恢复站点访问并提升防护能力。 阅读详情

相关推荐

基于555定时器的呼吸灯电路

呼吸灯是指LED灯在芯片的控制下完成由亮到暗的逐渐变化,感觉就像人在呼吸,其广泛使用在手机上,起到一个通知提醒的作用。呼吸灯在许多灯光装饰上也有大量使用,如音响、汽车广告牌等,在生活中较为常见。...

qq1074237849的博客 9497

第 111 场LeetCode 双周赛题解

T3感觉偏思维难度,T4经典套路题

xhchen的博客 463

STM32 SAES硬件加密协处理器全模式工程实践指南

AES(高级加密标准)是嵌入式系统中最基础且关键的对称密码算法,其硬件加速实现直接影响安全、性能与功耗平衡。Secure AES Coprocessor(SAES)作为STMicroelectronics在STM32U5等高安全MCU中集成的专用密码协处理器,不仅支持标准ECB/CBC/CTR模式,更原生兼容GCM和CCM等认证加密模式,具备抗侧信道、密钥保护与DMA卸载能力。理解其寄存器状态机(CHMOD/MODE/CPHASE)、NPBLB数据对齐机制及GCM四阶段编程范式,是规避Tag校验失败、IV错

weixin_42311427的博客 77

LeetCode 第 54 场双周赛题解

这是 2021-06-12 的一场双周赛,这次周赛的前三道题相对简单,第四题如果没有做过表达式处理相关的题目,是比较难想到正确做法的。其中,比赛涉及到的知识点有模拟、枚举、前缀和、表达式求值和动态规划。

Veggie的博客 611

【破局之道】LangChain4j 0.31.0 + Java 8 + Spring Boot:在“过时”环境中构建本地大模型应用的实战指南

本文为使用Java 8和Spring Boot等“过时”技术栈的团队提供了构建本地大模型应用的实战指南。通过采用LangChain4j 0.31.0这一兼容版本,结合Ollama部署本地大模型,开发者无需升级JDK即可在现有项目中快速集成AI能力,实现智能问答、文档摘要等功能,为传统项目注入创新活力。

t4y5u6i7o的博客 559

【Python】多分类算法—Random Forest

【Python】多分类算法—Random Forest 本文将主要就Random Forest(随机森林)的多分类应用进行描述,当然也可运用于二分类中 文章目录【Python】多分类算法—Random Forest前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 本文主要引用的是sklearn 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import nump

weixin_43166884的博客 1万+

LeetCode第 86 场双周赛

之后会参与leetcode周赛、双周赛,希望自己能够坚持下来,并以此来督促检验、提升自己的算法能力,加油!

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 747

XCKU060光纤卡学习资料保存:基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡

基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡 一、板卡概述 本板卡系我司自主研发,基于XilinxUltraScaleKintex系列FPGAXCKU060-FFVA1156-2-I架构,支持PCIEGen3x8模式的高速信号处理板卡,搭配两路40GQSFP+接口,两组64-bitDDR4,每组容量8Gbyte,可稳定运行在2400MT/s。板卡具有自控上电顺序,BP...

3075

第 129 场 LeetCode 双周赛题解

一开始想错了dp的方向,t3都写得挺费劲的..

xhchen的博客 1297

【Zephyr 系列 29】低功耗调试指南:电流测量、系统睡眠与功耗分析

Zephyr低功耗调试指南(150字摘要) 针对物联网设备续航需求,本文解析Zephyr低功耗调试方法:1️⃣ 机制:启用PM子系统和tickless idle,配置睡眠策略;2️⃣ 测量:推荐功耗分析仪捕捉μA级电流波动;3️⃣ 优化:管理唤醒源(如GPIO/RTC)、调整BLE广播/连接参数,挂起闲置外设;4️⃣ 分析:建立功耗文档,对比不同模式电流(如待机0.6mA vs广播3.2mA)。强调低功耗需系统性设计,初期即需纳入测试流程。下期将探讨Zephyr OTA升级实现。

hemoparrot的专栏 1181

彻底解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

renkai721的专栏 24万+

LeetCode第42场双周赛赛后题解

【GiantPandaCV导语】这是LeetCode的第42场双周赛的题解,公众号后面每周周末会以主条推文的方式更新当前周的Leetcode比赛的解题报告,并整理成一个面试刷题专栏,有需要的读者可以关注一下。另外,以前的比赛的解题报告我也会从当前这个时间点往前补,原创的解题报告会尽量以次条的方式放在CV相关的推文下方,不影响目前公众号的布局。本次周赛考察的知识点有:c++ stl,队列,堆栈,模拟,找规律,数论,前缀和等。如果你只是关心面试,看前面三题就好,最后一题有亿点难。 比赛链接 https:/.

I good vegetable a! 362

R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

R语言glm函数构建二分类logistic回归模型(family参数为binomial)、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)

statistics+insight+vista+power 1398

第 133 场 LeetCode 双周赛题解

t4题目条件很有提示作用

xhchen的博客 894

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode第128场双周赛题解

元素都是这个子数组中的。

weixin_62722847的博客 808

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

力扣(leetcode)第 34 场双周赛题解

A.矩阵对角线元素的和 解题思路: 直接暴力,当变长是偶数是不用减最中间的数,当边长是奇数时要减去最中间的数。比赛的时候没想那么多,看不大就用了各数组标记有没有加过。 代码: class Solution { public: int diagonalSum(vector<vector<int>>& mat) { int ans = 0; int n = mat.size(); int vis[105][105];

weixin_39412108的博客 282

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode 第25场夜喵双周赛 题解

吐槽: 这次最后一题dp状态集合选错了 居然我傻傻的选了压缩40的! 我太菜了 5555~ 文章目录a.拥有最多糖果的孩子a.题目a.分析a.参考代码b.改变一个整数能得到的最大差值b.题目b.分析b.参考代码c.检查一个字符串是否可以打破另一个字符串c.题目c.分析c.参考代码d.每个人戴不同帽子的方案数d.题目d.分析d.参考代码 a.拥有最多糖果的孩子 a.题目 给你一个数组 candies...

夢裡夢到醒不來的夢 372

leetcode 111场双周赛 2023-8-19

博主是今年5月份开始刷leetcode的c语言小白,致力于周赛上分,csdn分享周赛的结果和题解。与诸君共勉!

lzh_20011012的博客 119

第 113 场 LeetCode 双周赛题解

t2一般,t4感觉似曾相识的感觉,倒是最后才做的t3..

xhchen的博客 388

LeetCode第13场双周赛

1256. 加密数字 题目描述 给你一个非负整数 num ,返回它的「加密字符串」。 加密的过程是把一个整数用某个未知函数进行转化,你需要从下表推测出该转化函数: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAR6SOVS-1574228618510)(https://i.loli.net/2019/11/20/qP8LSD2McVuxWC4.png “题目描述...

Onwaier的博客 514

【LeetCode第78场双周赛】

第78场双周赛 A. 枚举子字符串起点,计算每个子字符串的值即可 class Solution { public: int divisorSubstrings(int num, int k) { stringstream ss; string s; int temp = num; ss << temp; ss >> s; int cnt = 0; .

solego’s blog 180

LeetCode 周赛上分之旅 #40 结合特征压缩的数位 DP 问题

⭐️学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。本文是 LeetCode 上分之旅系列的第 40 篇文章,往期回顾请移步到文章末尾~

pengxurui的博客 328

2023年11月力扣算法和数据结构学习日志

2023年1月决定将力扣作为自己学习算法和数据结构的长期平台。9月20日左右,决定记录下来自己解决力扣编程题的过程(多半是山路十八弯、秃头、白了少年头的过程,菜菜菜!!!这份学习日志争取做到以下三点(以上,完毕。

m0_62243101的博客 553

LeetCode 周赛上分之旅 #48 一道简单的树上动态规划问题

⭐️学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。本文是 LeetCode 上分之旅系列的第 48 篇文章,往期回顾请移步到文章末尾~

pengxurui的博客 475

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

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

zengjiajun2006的博客 888

力扣73 矩阵置零

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

Pniubi的博客 34
上一篇: Leetcode300. 最长递增子序列
下一篇: Leetcode2376. 统计特殊整数
UestcXiye
博客等级 码龄8年 9032粉丝 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、付费专栏及课程。

余额充值