LeetCode笔记:Biweekly Contest 34 比赛记录

论文浅读之PIP-Net: Patch-Based Intuitive Prototypes for Interpretable Image Classification 这篇文章的主要贡献包括:1 提出了一种新型的可解释图像分类模型PIP-Net,它基于原型部分学习可解释的原型,实现内置解释性。2 PIP-Net采用自监督学习的新正则化方法,学习原型之间的相似性,使得 latent 空间中的相似性能更好地与人类视觉感知相一致,从而减小了所谓的语义差距。3 PIP-Net可解释为一个稀疏的打分表,它可以检测图像是否属于任何类,或是否属于多个类。它也可以对OOD数据进行分类并说“我没有看到过这个”。 阅读详情

0. 赛后总结

不知道是不是错觉,双周赛感觉是要比周赛多少简单一点,这一次的题目又是全部搞定了,总共耗时52分钟,不过错了两次,因此最终的成绩在1h,很可惜的刚好跑出了全国前100(102名),全球的成绩则为268名,除了上上周那次前两百的成绩,这次算是最好的一次战绩了。

加油,再接再厉,再接再厉,争取有一天可以把成绩稳定到这个水平!

1. 题目一

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

1. 解题思路

这一题的思路没啥好多说的,就是暴力的遍历一下两条对角线然后求一下和就行了,对于 N × N N \times N N×N的矩阵,时间复杂度就是 O ( N ) O(N) O(N),唯一需要注意一下的就是当N为奇数时,两条对角线都会经过中点,需要去一下重。

2. 代码实现

给出python代码实现如下:

class Solution:
    def diagonalSum(self, mat: List[List[int]]) -> int:
        n = len(mat)
        ans = 0
        for i in range(n):
            ans += mat[i][i] + mat[i][n-1-i]
            if i == n-1-i:
                ans -= mat[i][i]
        return ans

提交代码后评测得到:耗时116ms,占用内存13.8MB。虽然不是当前的最优解,但是完全是实现细节上有所差别,这里就不再赘述了。

2. 题目二

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

1. 解题思路

这一题事实上也还好,就是统计有多少个1:

  1. 如果1的个数无法被三整除,则无法切分,返回-1;
  2. 如果1的个数为0,则所有元素都为0,那么就是将所有的元素分为三堆,假设总共有N个元素,则可能的切分方法数量为 C N − 1 2 C_{N-1}^{2} CN−12​;
  3. 如果1的个数为 3 k 3k 3k个,则第一刀切在第 k + 1 k+1 k+1个1之前,第二刀切在第 2 k + 1 2k+1 2k+1个1之前,假设两者之前分别有n和m个0,则可能的切分方法为 ( n + 1 ) × ( m + 1 ) (n+1) \times (m+1) (n+1)×(m+1)

2. 代码实现

我们将上述代码思路转换为python代码即有:

class Solution:
    def numWays(self, s: str) -> int:
        MOD = 1000000007
        one_count = 0
        zero_count = 0
        cache = {}
        for c in s:
            if c == '0':
                zero_count += 1
            else:
                one_count += 1
                cache[one_count] = zero_count
                zero_count = 0
        if one_count not in cache.keys():
            cache[one_count] = zero_count
        if one_count % 3 != 0:
            return 0
        elif one_count == 0:
            return (zero_count-2) * (zero_count-1) // 2 % MOD
        else:
            return (cache[one_count // 3 +1] + 1) * (cache[one_count // 3 * 2 +1] + 1) % MOD

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

emmmm,不用吐槽这里的变量命名,我懂得,但是实在没想到什么好的命名方法,然后比赛的时候又赶时间,然后就变成这副德行了。。。(。>︿<)_θ

另外当前的最优解耗时88ms,但是看了一下,思路是完全相同的,所以这里也就不再多做赘述了。

3. 题目三

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

1. 解题思路

这一题算是我这次比赛里面做的最失败的一题了,先是题目理解错误,再是又出现了一次边界条件没想清楚,结果就呵呵了。

这题最需要注意的是,他这里的删除的子串是一段连续的子串,而不是可以任意选择每个元素是否进行删除,如果是后者的话就要用迭代的方式进行考察了,但是这里既然要求只能删除连续的一串子串,那么事实上题目就被大大简化了。

在只能删除一串子串的情况下,保留下来的子序列就一定是一段头部的序列加上一段尾部的序列(两者可以为空),因此,我们只要找到头部的最长连续非减子串以及尾部的最长连续非减子串,然后将两者进行合并即可。

我们可以将上述思路进一步细化到下述解题步骤:

  1. 如果整个序列就是非减的,那么直接返回0就可以了;
  2. 找到头部和尾部的最长非减连续子串,记为s1和s2;
  3. 合并s1和s2,使得s1与s2保持非减的情况下拥有最大的长度;

此时,总长度减去保留下来的子串的长度就是我们最少需要删除的序列长度了。

2. 代码实现

给出上述思路下的代码实现如下:

class Solution:
    def findLengthOfShortestSubarray(self, arr: List[int]) -> int:
        n = len(arr)
        if n == 1:
            return 0
        st_last = n-1
        for i in range(n-1):
            if arr[i+1] < arr[i]:
                st_last = i
                break
        if st_last == n-1:
            return 0
        ed_first = 0
        for i in range(n-1, 0, -1):
            if arr[i-1] > arr[i]:
                ed_first = i
                break
                
        @lru_cache(None)
        def merge(st_last, ed_first):
            if st_last == -1 or ed_first == n or arr[st_last] <= arr[ed_first]:
                return st_last + 1 + n - ed_first
            else:
                return max(merge(st_last-1, ed_first), merge(st_last, ed_first+1))
            
        left_len = merge(st_last, ed_first)
        return n - left_len

提交代码之后评测得到:耗时640ms,占用内存42.6MB。为当前的最优解法。

4. 题目四

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

1. 解题思路

虽然这一题的难度划分是hard,但是较之上一题,这一题的解题思路事实上会更加清晰一些。

我们只需要一直走,直到走到没油为止即可。

可以同一个递归的思路来解这道题:

  1. 如果当前汽油已经为负了,说明走不到终点,可以停止计算;
  2. 如果当前城市为目标城市,那么总的路线数目+1;
  3. 如果当前汽油还有,那么继续从当前城市出发到下一个城市,累加他们当中经过目标城市的路径总数即为最终的答案。

需要注意的是,直接这么迭代一定会出现超时的问题,需要使用动态规划的方式用空间换取时间。

不过,这里,我们就采用python的缓存机制来直接暴力求解了。

2. 代码实现

给出python代码实现如下:

class Solution:
    def countRoutes(self, locations: List[int], start: int, finish: int, fuel: int) -> int:
        MOD = 1000000007
        fuel_cost = [[abs(i - j) for j in locations] for i in locations]
        n = len(locations)
        
        @lru_cache(None)
        def dp(loc, fuel):
            if fuel < 0:
                return 0 
            ans = 1 if loc == finish else 0
            for i in range(n):
                if i == loc:
                    continue
                ans += dp(i, fuel-fuel_cost[loc][i])
            return ans % MOD
        
        return dp(start, fuel)

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

当前最优算法耗时360ms,看了一下,他的算法思路和我本质上是一样的,但是他就是使用了一般的动态规划方式,构建了一个 N × ( f u e l + 1 ) N \times (fuel+1) N×(fuel+1)的矩阵来保存中间计算结果。

如果感兴趣的读者可以自行研究一下,毕竟实话实说,使用缓存虽然实现起来方便很多,但一直觉得是邪道来着。。。>﹏<

从NVLINK到EthLink:GPU互联技术演进全解析(含最新行业趋势) 本文深入解析了从NVLINK到EthLink的GPU互联技术演进,重点剖析了Scale-up与Scale-out两种核心范式。文章详细对比了NVLINK、UALINK及革命性的EthLink技术,后者创新性地将以太网改造为支持Load/Store与RDMA双语义的高性能互联网络,旨在打破封闭生态,实现高性能与开放性的统一。最后,文章提供了技术选型指南并展望了未来以以太网为主导、语义融合的行业趋势。 阅读详情

相关推荐

DeepSeek Harness实战:从零构建插件化AI Agent

AI Agent开发正从硬编码走向框架化组织,插件化架构成为提升工程效率的关键。在构建可复用、可扩展的智能体系统时,开发团队需要一套能够统一管理模型调用、工具注册与上下文组装的基础设施。DeepSeek Harness作为面向Agent工程的插件化框架,通过Harness、DeepAgent与Skill三个核心抽象,将模型、工具与技能解耦为可插拔单元,让开发者无需重复造轮子即可快速搭建具备工具调用能力的智能体。本文从环境配置到Skill插件开发,完整演示如何基于DeepSeek模型构建一个可运行的Agent

weixin_34279184的博客 449

LeetCode笔记:Biweekly Contest 104

LeetCode笔记:Biweekly Contest 104

codename_cys的博客 294

STM32 BLDC无刷电机霍尔信号捕获与换相控制实战解析

本文深入解析了STM32如何实现BLDC无刷电机的霍尔信号捕获与换相控制。详细阐述了硬件接口配置、定时器霍尔传感器模式的使用、抗干扰的滤波器与软件容错设计,以及中断服务与换相逻辑的实战代码。重点解决了信号抖动、换相不准等常见问题,旨在帮助开发者构建稳定可靠的电机驱动基础。

weixin_29193259的博客 368

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

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1165

SAP采购订单中项目类别B(限制)的控制逻辑

在笔者所在企业中,框架类采购订单中项目类别需要选择B(限制)。今天笔者从比较全面的角度分析了一下这个项目类别B到底可以决定些什么?控制到什么?先从后台SPRO中打开相应的配置菜单。 打开项目类别B之后,可以看到一些配置信息,这里有一点与其它配置不同的地方,即无法新增项目,也无法修改现有项目。这个疑惑今后再去解决吧。当前只研究项目类别B的控制逻辑。 下面就参考上图中的配置分段来分析和测试其控制逻辑, 1、如项目类别配置图,所需材料值为不允许;经测试,如下图在采购订单创建时,不能输入物料编号条目。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6033

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

最强AI插件Augment,适配idea、vscode,对标cursor!

Augment是一款新兴的AI辅助编码工具,能够无缝集成到IDEA和VS Code等主流IDE中,直接对标专业AI编码工具Cursor。其核心优势包括多IDE适配、无缝集成、代码理解与生成以及对话式编程体验。Augment通过插件形式保留原IDE功能和快捷键习惯,降低学习成本,同时提供深度理解项目上下文和生成高质量代码的能力。此外,Augment还具备审查变更、检查点、代理与代理自动等核心功能,支持从简单配置更改到复杂功能实现的各种开发任务。Augment代表了AI辅助编程工具的新方向,通过增强开发者熟悉的

todoitbo的博客 1万+

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

codename_cys的博客 3868

(计算机组成原理)第二章数据的表示和运算-第二节:数字电路基础知识

本文介绍了计算机组成原理中的逻辑门电路、多路选择器和三态门。逻辑门电路包括基本逻辑运算(与、或、非)和复合逻辑运算(与非、或非、异或、同或),这些运算通过门电路实现,并满足分配律和结合律。多路选择器(MUX)用于从多个输入信号中选择一个输出,广泛应用于数据选择、资源共享和逻辑函数实现等场景。三态门则具有三种输出状态(高电平、低电平、高阻态),常用于总线控制和信号隔离。这些元件在数字电路设计和计算机系统中具有重要作用。

快乐江湖的博客 2474

6、硬件工程师笔试面试知识器件篇——电容(2025版本)

本文系统介绍了电容器的基本原理、类型分类、应用场景及相关设计问题。首先阐述了电容的定义、工作原理及计算公式,详细分析了陶瓷、电解、薄膜、钽等不同类型电容的特性差异。针对高频电路设计,重点讨论了如何评估和优化电容器的寄生效应(ESR/ESL)、频率特性、温度特性等关键参数。文章还提供了PCB布局优化策略,包括缩短走线、多层板设计、去耦网络配置等方法。最后涵盖了电容器寿命计算、稳定性评估及电源电路设计中的纹波电流处理等实用内容,为硬件工程师提供了全面的电容器选型和应用指南。

XU157303764的博客 3872

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

机器学习(十九):梯度提升回归(GBR)

机器学习中的梯度提升回归算法原理与案例实战。

全栈川川 5156

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

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

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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 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

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 413

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值