LeetCode笔记:Weekly Contest 206 比赛记录

告别迷茫!手把手教你用Synopsys VC USB VIP搭建验证平台(附UVM分层序列实战解析) 本文详细介绍了如何使用Synopsys VC USB VIP搭建验证平台,并深入解析UVM分层序列的实战应用。通过Step-by-Step的操作指南和关键配置示例,帮助验证工程师高效集成USB VIP,掌握从环境搭建到测试用例开发的全套技能,特别适合处理复杂协议验证的挑战。 阅读详情

0. 赛后总结

最近不知是换到中文leetcode平台之后水土不服还是怎么样,感觉真的是到了瓶颈期了,最近几次打比赛真的是一次不如一次,做起来异常不顺手。

看了一下头部几位大佬们的做题耗时,基本都还是在10分钟左右,因此基本不存在这几次的题目特别难的说法,那么就是我这边自身发挥的问题了。

感觉真的是需要休息一阵子好好调整一下了,等到国庆放假的时候好好休息一下吧,但愿之后的状态能有回暖吧。。。

{{{(>_<)}}}

1. 题目一

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

1. 解题思路

这一题的关键点就是统计只出现一行和一列中的1中的元素的个数。

因此,只要统计每一行中只有一个1的行,然后再对对应元素的列看一下是否该列中也恰好只出现了一个1。

2. 代码实现

给出python代码实现如下:

class Solution:
    def numSpecial(self, mat: List[List[int]]) -> int:
        ans = 0
        n = len(mat)
        m = len(mat[0])
        for i in range(n):
            eff = []
            for j in range(m):
                if mat[i][j] == 1:
                    eff.append((i, j))
            if len(eff) == 1:
                j = eff[0][1]
                count = 0
                for k in range(n):
                    if mat[k][j] == 1:
                        count += 1
                if count == 1:
                    ans += 1
        return ans

提交代码之后评测得到:耗时168ms,占用内存14.1MB。姑且属于当前第一梯队。

2. 题目二

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

1. 解题思路

这一题感觉是这次比赛中最蠢的一题,纯粹就是看题目的问题,问题描述极其绕嘴,比赛的时候看题目看了半天,还理解错了,然后就直接呵呵了。

等到最后终于把题目看明白之后,就直接暴力求解解决了。。。

本来以为是我自己的问题,然后现在去看了一下题目的评价,发现25个点赞,然后98个差评,呵呵。。。

算了,读者注意一下不开心的定义就行,是要同时满足两个条件,然后按照他说的规则直接暴力遍历一遍就行了,没啥技术含量,甚至说千万不要去想什么更精妙的解法,这题目纯粹就是靠怎么读题目而已!!!

2. 代码实现

直接给出代码实现如下:

class Solution:
    def unhappyFriends(self, n: int, preferences: List[List[int]], pairs: List[List[int]]) -> int:
        n = len(pairs)
        ans = 0
        for i in range(n):
            x, y = pairs[i]
            xh = True
            yh = True
            for j in range(n):
                if i == j:
                    continue
                u, v = pairs[j]
                if preferences[x].index(u) < preferences[x].index(y) and preferences[u].index(x) < preferences[u].index(v):
                    xh = False
                    break
                if preferences[x].index(v) < preferences[x].index(y) and preferences[v].index(x) < preferences[v].index(u):
                    xh = False
                    break
            for j in range(n):
                if i == j:
                    continue
                u, v = pairs[j]
                if preferences[y].index(u) < preferences[y].index(x) and preferences[u].index(y) < preferences[u].index(v):
                    yh = False
                    break
                if preferences[y].index(v) < preferences[y].index(x) and preferences[v].index(y) < preferences[v].index(u):
                    yh = False
                    break
            if not xh: 
                ans += 1
            if not yh: 
                ans += 1
        return ans

提交代码之后得到:耗时472ms,占用内存27.1MB。

很挫的代码实现,但是懒得去看别人的实现了,反正没有什么量级上的差异,如果有兴趣的读者可以自行去看一下,这里就不多做介绍了。

3. 题目三

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

1. 解题思路

这一题的本质就是求最小联通图。

普遍的算法就是Dijkstra算法,一般的数据结构课上都有,不过我有点忘了,就用了他的等价算法,Dijkstra算法是每次取连通区域外的最小边添加到图中,直到整张图都连通起来。

这边的算法名字我给忘了,不过是每次取最短边使得原本不连通的两个区域能够连通起来,直到整张图都连通起来。

2. 代码实现

给出代码实现如下:

class Solution:
    def minCostConnectPoints(self, points: List[List[int]]) -> int:
        n = len(points)
        distances = [[abs(x[0] - y[0]) + abs(x[1] - y[1]) for y in points] for x in points]
        distances = sorted((distances[x][y], x, y) for x in range(n-1) for y in range(x+1, n))
        ans = 0
        have_connected = [set([i]) for i in range(n)]
        for d, x, y in distances:
            if any(x in s and y in s for s in have_connected):
                continue
            s1 = -1
            s2 = -1
            for j, s in enumerate(have_connected):
                if x in s:
                    s1 = j
                if y in s:
                    s2 = j
            if s1 > s2:
                s1, s2 = s2, s1
            have_connected.append(have_connected[s1] | have_connected[s2])
            have_connected.pop(s2)
            have_connected.pop(s1)
            ans += d
            if len(have_connected) == 1:
                break
        return ans

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

当前最优算法耗时仅为1060ms,看了一下,使用的是Dijkstra算法。如果有感兴趣的读者可以自行实现一下,这里我就先放弃了。。。

4. 题目四

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

1. 解题思路

这一题比赛的时候是完全没能做出来,因为一开始的思路就是错的,后来也是比赛结束之后看了一下头部几位大神们的做法,然后终于有了一些思路,后来算是终于实现出来了。

这一题的关键在于每一次的操作都是对于子序列的排序操作,因此,显然必有:原始序列中一个元素后方比他小的元素只会减少不可能会增加。

因此,要判断s序列能否通过一系列操作转换为t序列,我们只需要考察:

  1. 两者所拥有的字符集合是否完全一致;
  2. 对于s中的每一个字符与t中对应的字符,s中字符后方每一个比它小的字符的数目均不少于t中对应的字符数目。

2. 代码实现

我们将其整理为代码实现即有:

class Solution:
    def isTransformable(self, s: str, t: str) -> bool:
        n = len(t)
        scounter = [{c: 0 for c in "0123456789"} for _ in range(n+1)]
        tcounter = [{c: 0 for c in "0123456789"} for _ in range(n+1)]
        for i in range(n-1, -1, -1):
            for c in "0123456789":
                scounter[i][c] = scounter[i+1][c]
                tcounter[i][c] = tcounter[i+1][c]
            scounter[i][s[i]] += 1
            tcounter[i][t[i]] += 1
        
        if not all(scounter[0][c] == tcounter[0][c] for c in "0123456789"):
            return False
        
        scounter_v2 = {c: [] for c in "0123456789"}
        for i in range(n):
            scounter_v2[s[i]].append(i+1)
        tcounter_v2 = {c: [] for c in "0123456789"}
        for i in range(n):
            tcounter_v2[t[i]].append(i+1)
            
        for c in "123456789":
            for idx1, idx2 in zip(scounter_v2[c], tcounter_v2[c]):
                if not all(scounter[idx1][str(k)] >= tcounter[idx2][str(k)] for k in range(int(c))):
                    return False
        return True

上述代码提交可以通过,评测得到:耗时3332ms,占用内存104.2MB。

而当前最优代码实现耗时仅为332ms,比我们的算法高了一整个量级,因此,后续还有很大的优化空间。

需要好好看一下对方的代码实现。

感兴趣的读者可以自己先看一下,这里我就先放着了,过两天有空了再来研究一下。

保姆级教程:用R语言自动化处理FAERS季度数据(从文件合并到删除废弃Case) 本文提供了一份详细的R语言教程,指导如何自动化处理FAERS季度数据,包括文件合并和删除废弃Case。通过使用tidyverse、fs等R包,构建健壮的自动化流程,特别适合药物安全监测领域的数据分析师。教程涵盖环境准备、智能合并多季度数据、精准删除废弃Case等关键步骤,并提供了错误处理与日志记录的实用技巧。 阅读详情

相关推荐

机器学习预测股票收益(一)之随机森林模型

机器学习预测股票收益(一)前言一、导入库和数据二、处理数据以及计算特征变量三、使用随机森林回归预测股票收益1.构建训练集和测试集2.查看预测结果四、根据预测结果构建long-short投资组合1.定义投资组合函数2.定义绩效分析函数五、引入Fama-French Factor六、投资组合表现1.超额收益表现2.多因子回归总结 前言 本文将使用Python整理1927-2020年所有美国上市公司股票数据。根据历史收益以及交易量,使用随机森林,支持向量机以及神经网络等机器学习方法预测股票收益。最优结果构建的资产

weixin_47174968的博客 1万+

Leetcode---2021.7.11周赛

第一题 思路 代码 在这里插入代码片 第二题 思路 代码 在这里插入代码片 第三题 思路 代码 在这里插入代码片 第四题 思路 代码 在这里插入代码片

weixin_41963310的博客 286

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 161

LeetCode笔记:Weekly Contest 326

LeetCode笔记:Weekly Contest 326

codename_cys的博客 422

组态王|组态王通过选择日期实现历史数据的查询

②在弹出的【插入通用控件】对话框选择【Calender Control】控件,然后点击【确定】按钮,关闭对话框,然后在画面上适当的位置按住鼠标左键并拖动,绘制出一个矩形框,放开鼠标,就完成了控件的绘制。此函数将指定的时间格式(年,月,日,时,分,秒)转换为以秒为单位的长整型数,转换的时间基准是UTC(格林尼治)1970年1月1日00:00:00。实现内容,通过两个日历控件选择开始日期和结束日期,然后点击【历史数据查询】按钮,在报表中显示对应时间段的数据集。另外你用过哪些组态软件?

做有价值的事,积累有价值的笔记! 4556

FSMC驱动LCD显示屏学习2

液晶显示器,简称 LCD(Liquid Crystal Display)相对于上一代 CRT 显示器 (阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分 子排列却和固体晶体一样非常规则,因此取名液晶。

usjjjsj的博客 1694

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

搞定汽车座椅电机EMC超标:一个PCB滤波板的实战设计与避坑心得

本文详细介绍了汽车座椅电机EMC超标问题的解决方案,通过PCB滤波板的实战设计,解决了传导发射测试超标问题。文章分享了在空间受限条件下的滤波电路架构设计、接地系统优化及迭代验证过程,为汽车直流电机的EMC整改提供了实用方法论。

weixin_30336061的博客 377

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

Cocos Creator实战:5步搞定棋牌游戏大厅场景开发(附完整代码)

本文详细介绍了使用Cocos Creator 3.8开发棋牌游戏大厅的5个关键步骤,包括工程配置、动态UI系统实现、核心交互功能开发、性能优化及调试发布技巧。通过模块化代码和实战案例,帮助开发者快速构建高交互性的棋牌游戏大厅,提升用户留存率。

weixin_29002209的博客 353

PCL DBSCAN密度聚类【2026最新版】

点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。

点云侠的博客 5681

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

codename_cys的博客 3868

链接文件及功能安全:基于Tasking的LSL链接文件知识点梳理及实际应用分析

本文旨在记录研究链接文件时所遇到的问题及个人理解,以便日后查阅。在探索过程中,我遇到了诸多问题,同时对链接文件有了初步的认识。通过记录这些问题与理解,我希望能够为后续的研究提供清晰的思路和有价值的参考。这不仅是对研究过程的总结,更是对未来学习和实践的有力支持。

梦想技术家 1098

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的博客 3302

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

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

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

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

LeetCode笔记:Weekly Contest 229 比赛记录

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

codename_cys的博客 2467

ssm框架搭建

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

Leetcode 3600. Maximize Spanning Tree Stability with Upgrades

3600. Maximize Spanning Tree Stability with Upgrades

codename_cys的博客 1750

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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的博客 1719

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 279

LeetCode笔记:Weekly Contest 279 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 2164. Sort Even and Odd Indices Independently 1. 解题思路 这题还是比较直接的,就是先按照奇偶性取出元素,然后分别进行排序之后进行重组即..

codename_cys的博客 1514

LeetCode Hot 100 链表专题 三· 3 题(Java)

收录题目:2. 两数相加、19. 删除链表的倒数第 N 个结点、24. 两两交换链表中的节点。 统一结构:① 题目分析与解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结。 贯穿三题的两条主线:虚拟头结点 dummy(统一处理头结点被修改的场景)与 指针修改顺序(避免断链、丢引用)。

2401_88612756的博客 481

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

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

AlphaTao的博客 169
上一篇: 经典算法:Trie树结构简介
下一篇: NLP笔记:生成问题常用metrics整理
Espresso Macchiato
博客等级 码龄6年 2453粉丝 818原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值