LeetCode笔记:Biweekly Contest 49 比赛记录

CONN工具箱分析fmri数据笔记1 前言一、安装二、预处理三、去噪 前言 CONN:functional connectivity toolbox,是基于MATLAB和SPM的一个对功能磁共振数据进行分析的一个工具箱。可以进行以下分析: Seed-based correlations (SBC), ROI-to-ROI correlations, graph analyses, Independent component analyses(group-ICA), Masked (ICA) Amplitude of Low-Frequency. 阅读详情

0. 赛后总结

表示人果然来是老了,中午和同学聚餐,跑去吃日料自助,兴致所至畅饮3大杯梅酒,然后直接就给跪了,当时没啥反应,吃完回来之后发现头晕脑涨,一觉睡到晚上快8点,回去之后还是晕乎乎的,饭都不怎么吃得下,硬塞了一碗泡面之后躺在床上瞬间就觉得天旋地转,最终还是放弃了做比赛,估计周日的比赛也是呵呵了……

得亏是清明假期的第一天,要是第二天或者第三天搞这么一出我估计上班就挂了……

老年人了,还是得好好养生啊!

1. 题目一

给出题目一的试题链接如下:

1. 解题思路

这一题没啥好说的,就是根据行列关系给出格点是否为白色格点的判断即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def squareIsWhite(self, coordinates: str) -> bool:
        col, row = coordinates[0], coordinates[1]
        return (row in "1357" and col in "bdfh") or (row in "2468" and col in "aceg")

提交代码评测得到:耗时28ms,占用内存14.2MB。

2. 题目二

给出题目二的试题链接如下:

1. 解题思路

这一题思路其实也挺直接的,不妨设句子A长于句子B,则两者相似的充要条件为B可以通过插入一个小句来构成A。

换言之,只要不断删除头尾部分AB两个句子完全相同的部分,就可以将B完全删除。

2. 代码实现

给出python代码实现如下:

class Solution:
    def areSentencesSimilar(self, sentence1: str, sentence2: str) -> bool:
        s1 = sentence1.strip().split()
        s2 = sentence2.strip().split()
        
        while s1 != [] and s2 != [] and s1[0] == s2[0]:
            s1.pop(0)
            s2.pop(0)
            
        while s1 != [] and s2 != [] and s1[-1] == s2[-1]:
            s1.pop()
            s2.pop()
        
        return s1 == [] or s2 == []

提交代码评测得到:耗时28ms,占用内存14.4MB。

当前最优的代码实现耗时24ms,其算法思路与我们是相似的,就不过多展开了。

3. 题目三

给出题目三的试题链接如下:

1. 解题思路

nice pair的定义为:

  • nums[i] + rev(nums[j]) == nums[j] + rev(nums[i])

变换公式可以得到:

  • nums[i] - rev(nums[i]) == nums[j] - rev(nums[j])

因此,我们只需要记录下nums[i] - rev(nums[i])的值,即可在 O ( N ) O(N) O(N)的时间复杂度内完成统计。

2. 代码实现

给出python代码实现如下:

class Solution:
    def countNicePairs(self, nums: List[int]) -> int:
        MOD = 10**9 + 7
        
        def rev(n):
            res = 0
            while n != 0:
                res = res * 10 + n % 10
                n = n // 10
            return res
        
        counter = defaultdict(int)
        for n in nums:
            counter[n - rev(n)] += 1
            
        res = 0
        for n in counter.values():
            res += n*(n-1)//2
        return res % MOD

提交代码评测得到:耗时680ms,占用内存24.6MB。

4. 题目四

给出题目四的试题链接如下:

1. 解题思路

这一题最后还是采用暴力的方式解决的。

就是考察所有的取用情况,然后将最优解进行输出,我们采用cache进行状态记录之后,整体的解法还是比较直接的。

2. 代码实现

直接给出python代码实现如下:

class Solution:
    def maxHappyGroups(self, batchSize: int, groups: List[int]) -> int:
        cnt = [0 for _ in range(batchSize)]
        for g in groups:
            cnt[g % batchSize] += 1
            
        @lru_cache(None)
        def dp(status, remain):
            if all(x == 0 for x in status[1:]):
                return 0
            nxt = list(status)
            res = 0
            for i in range(1, batchSize):
                if status[i] == 0:
                    continue
                nxt[i] -= 1
                res = max(res, dp(tuple(nxt), (remain+i)%batchSize))
                nxt[i] += 1
            return res if remain != 0 else res + 1
        
        return cnt[0] + dp(tuple(cnt), 0)

提交代码评测得到:耗时1200ms,占用内存48.4MB。

但是当前最优的算法耗时仅24ms,是我们效率的50倍,这就很悲伤了……

3. 算法优化

细看了一下他的代码,发现他们的核心思路和我们是一样的,不过他们在我们的代码基础上做了剪枝,首先,当然余数为0的部分可以直接去掉,这部分我们也做了,此外,他们还考察了余数互补的部分,即直接将 k k k与 n − k n-k n−k进行了配对消耗,从而大幅缩减了整体需要考察的余量的比例。

给出其代码实现如下:

class Solution:
    def maxHappyGroups(self, batchSize: int, groups: List[int]) -> int:
        cnt = [0 for _ in range(batchSize)]
        for g in groups:
            cnt[g % batchSize] += 1
            
        ans = cnt[0]
        cnt[0] = 0
        for i in range(1, batchSize // 2):
            pair = min(cnt[i], cnt[batchSize-i])
            ans += pair
            cnt[i] -= pair
            cnt[batchSize-i] -= pair
        if batchSize % 2 == 0:
            pair = cnt[batchSize//2] // 2
            ans += pair
            cnt[batchSize//2] -= 2*pair
            
        @lru_cache(None)
        def dp(status, remain):
            if all(x == 0 for x in status):
                return 0
            nxt = list(status)
            res = 0
            for i in range(1, batchSize):
                if status[i] == 0:
                    continue
                nxt[i] -= 1
                res = max(res, dp(tuple(nxt), (remain+i)%batchSize))
                nxt[i] += 1
            return res if remain != 0 else res + 1
        
        return ans + dp(tuple(cnt), 0)

提交代码评测得到:耗时64ms,占用内存15.3MB。

虽然没有达到最优的24ms,但是基本处于同一个量级了。

详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建    本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示。    一、 A*算法简介       A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。      公式表示为: f(n)=g(n)+h(n),其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,g(n) 是在状态空间中从初始状态到状态n的实际代价,h(n) 是从状态n到目标状态的最佳路径的估计代价。 阅读详情

相关推荐

FPGA数字下变频实战:用Vivado DDS IP核实现IQ采样与频率校正(附MATLAB仿真对比)

本文提供了一份基于Vivado DDS IP核实现FPGA数字下变频(DDC)的完整工程指南。详细阐述了IQ采样的原理、DDC链路构建、DDS频率校正的工程实现,并重点介绍了如何利用MATLAB搭建黄金参考模型进行全链路仿真与对比验证,分享了关键的调试技巧与性能优化建议。

t1u2v的博客 811

leetcode动态规划题目总结

文章目录1. Number Tower,数塔2. Fibonacci Numbers,斐波那契数列3. 0/1 Knapsack, 0/1 背包4. Unbounded Knapsack,无限(完全)背包5. Counting DP,计数 DP5.1. Total Number of Solutions,方案总数5.2. Probability,概率6. Decision Making,决策问题6...

日沉云起的博客 2508

Verilator+VSCode实战:5分钟搞定Verilog语法检查与波形调试

本文详细介绍了如何将Verilator仿真器与VSCode编辑器高效集成,打造极速的Verilog开发工作流。通过环境配置、实时语法检查、一键仿真与波形生成等实战技巧,帮助IC设计工程师在几分钟内完成从代码编写到波形调试的全过程,大幅提升中小规模模块的验证效率。

weixin_28454475的博客 469

Leetcode 1815. 得到新鲜甜甜圈的最多组数(模拟退火)

class Solution { public: vector<int>w; int ans=-1,b; int calc(){ int res=1,s=0; for(int i=0;i<w.size();i++){ s=(s+w[i])%b; if(!s&&i<w.size()-1)res++; } ans=max(ans,r...

菱形继承 298

SAP STO流程实战:如何配置外向交货单PGI后自动生成内向交货单(附避坑指南)

本文详细解析了SAP STO流程中,如何配置实现外向交货单发货过账(PGI)后自动生成内向交货单。通过分步指南,重点阐述了SPED输出类型、输出条件记录、收货点及确认控制码等关键配置,并提供了针对“No goods receipt possible”等常见错误的避坑指南,助力实现跨公司物料转移流程的自动化与高效衔接。

weixin_28327051的博客 395

Code Composer Studio 8.3.1安装与常见问题解决指南

本文提供了Code Composer Studio 8.3.1版本的详细安装指南与常见问题解决方案。内容涵盖从下载离线安装包、系统环境准备、自定义安装步骤,到首次启动配置及汉化建议。重点解析了安装过程中可能遇到的闪退、卡顿、Java虚拟机错误等典型问题的排查与修复方法,旨在帮助开发者高效部署这一稳定的嵌入式集成开发环境。

weixin_29195217的博客 330

LeetCode——1815. 得到新鲜甜甜圈的最多组数(Maximum Number of Groups Getting Fresh Donuts)[困难]——分析及代码(Java)

LeetCode——1815. 得到新鲜甜甜圈的最多组数[Maximum Number of Groups Getting Fresh Donuts][困难]——分析及代码[Java]一、题目二、分析及代码1. DFS + 记忆化搜索(1)思路(2)代码(3)结果三、其他 一、题目 有一个甜甜圈商店,每批次都烤 batchSize 个甜甜圈。这个店铺有个规则,就是在烤一批新的甜甜圈时,之前 所有 甜甜圈都必须已经全部销售完毕。给你一个整数 batchSize 和一个整

江南土豆的博客 417

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

jane0819的博客 523

LeetCode笔记:Biweekly Contest 110

LeetCode笔记:Biweekly Contest 110

codename_cys的博客 454

微信小程序流量主提升ecpm的一些方法

ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。

任聪聪的博客 1万+

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2606

LeetCode笔记:Biweekly Contest 70

LeetCode笔记:Biweekly Contest 70 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 2144. Minimum Cost of Buying Candies With Discount 1. 解题思路 这一题直接使用贪婪算法即可实现。 首先我们将价格进行排序,然后价..

codename_cys的博客 5535

【2025年华为秋招(AI)-11月19日-第二题(200分)- 终端款型聚类识别】(题目+思路+Java&C++&Python解析+在线测试)

该摘要总结了题目要求、输入输出格式、KMeans算法的实现步骤以及关键点。以下是150字内的摘要: 本文提出基于KMeans算法对终端型号进行聚类的方法。通过包间隔时长、连接持续时长、漫游前后信号强度4个特征,使用欧氏距离度量相似度。算法采用固定初始化策略(前k个样本作为初始质心),经过分配-更新迭代,直至质心移动小于1e-8或达到最大迭代次数。最终输出各簇样本数并按升序排列,解决了终端型号自动分类问题。示例显示该方法能有效识别3-4类终端,并准确统计每类数量。

m0_73659489的博客 141

LeetCode笔记:Weekly Contest 219 比赛记录

LeetCode笔记:Weekly Contest 219 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这一次的比赛怎么说呢,感觉有点不尴不尬的。 要说吧,4道题也都做出来了,耗时老实说也没有特别长,不算错误惩罚的话其实也就56分钟,不到1个小时,整体虽然没有挤进国内前100,好歹也有前4%(116/..

codename_cys的博客 4819

efm32 入门.pdf

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

STM32F407中文手册

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

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

codename_cys的博客 3868

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode笔记:Weekly Contest 221 比赛记录

LeetCode笔记:Weekly Contest 221 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 昨天才遭遇滑铁卢,本以为成绩已经够差了,结果转头今天就被打脸,成绩比昨天还差,国内468/3397,全球1274/8838,真的是,不想说什么了。 不过这次真心是我自找的,第三题明明是一道简单的题目..

codename_cys的博客 3303

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode笔记:Weekly Contest 229 比赛记录

LeetCode笔记:Weekly Contest 229 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这周的比赛整体都给跪了,两场比赛都是不顺的要死,昨天的比赛还能归结到看错题目,这次的比赛就真的是没得洗了,第三题超时之后就没有更好的思路了,第四题压根没有一个可行的思路,想到的解法实现出来之后发现都..

codename_cys的博客 2468

LeetCode笔记:Weekly Contest 206 比赛记录

LeetCode笔记:Weekly Contest 206 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 最近不知是换到中文leetcode平台之后水土不服还是怎么样,感觉真的是到了瓶颈期了,最近几次打比赛真的是一次不如一次,做起来异常不顺手。 看了一下头部几位大佬们的做题耗时,基本都还是在10分钟左右..

codename_cys的博客 2016

Leetcode 3600. Maximize Spanning Tree Stability with Upgrades

3600. Maximize Spanning Tree Stability with Upgrades

codename_cys的博客 1751

LeetCode笔记:Biweekly Contest 42 比赛记录

LeetCode笔记:Biweekly Contest 42 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 唉,前两周刚和同学吹牛说现在leetcode的比赛基本都能在前10%,发挥好的话能争国内前100,然后这周转头就被打脸,打得啪啪响,国内320/1578,世界1023/6631,连前20%都没卡进..

codename_cys的博客 1720

Leetcode 3448. Count Substrings Divisible By Last Digit

Leetcode 3448. Count Substrings Divisible By Last Digit

codename_cys的博客 1712

Leetcode 3537. Fill a Special Grid

Leetcode 3537. Fill a Special Grid

codename_cys的博客 1627

LeetCode笔记:Weekly Contest 220 比赛记录

LeetCode笔记:Weekly Contest 220 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这次的比赛结果略惨,只做出3题,然后国内才只有229/3690,世界则是667/9606,都是只有前7%的水平。 但是这次的题目应该算是比较简单的,看了一下,第一名的大佬只花了不到10分钟就搞定了,..

codename_cys的博客 1581

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

codename_cys的博客 1552

Leetcode 3609. Minimum Moves to Reach Target in Grid

Leetcode 3609. Minimum Moves to Reach Target in Grid

codename_cys的博客 1528

LeetCode笔记:Weekly Contest 203 比赛记录

LeetCode笔记:Weekly Contest 203 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 昨天刚刚历史性地第一次打进了前500,今天转头就历史性地打进了前200,实在是有点开心。 不过说到底还是因为题目比较简单的关系,看了一下,前头的大佬们都是10分钟左右就做完的,实在不认为这次的题目比..

codename_cys的博客 1523
上一篇: LeetCode笔记:Weekly Contest 233 比赛记录
下一篇: LeetCode笔记:Weekly Contest 235 比赛记录
Espresso Macchiato
博客等级 码龄7年 2453粉丝 818原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值