leetcode 第 361 场周赛

2843. 统计对称整数的数目

核心思想:枚举每一个数是否是对称整数,第一种写法为python写法,第二种为一般写法我觉得更好,非常有思想性。

leetcode 第 361 场周赛_第1张图片

leetcode 第 361 场周赛_第2张图片

 

2844. 生成特殊数字的最少操作

核心思想:枚举特殊数字结尾的几种可能。其实自己做的时候一点头绪都没有,完全不知道应该怎么删除。首先写出一串数字 0,25,50,75,100,125...你会发现任意一个数字都只可能出现00,25,50,75四种结尾,然后加上一种全部删除的情况0。然后我们枚举这四种情况即可,对于一个结尾50来说,我们首先从右往左找到0的位置i,然后再去找到5的位置j,然后你会发现j前面的都是留下的,加上原本的两个数字,你就需要删除n-j-2。有人会问有好几个0,然后我们肯定会删到剩00,不可能再去多删的。

leetcode 第 361 场周赛_第3张图片

2845. 统计趣味子数组的数目

核心思想:前缀和+哈希。问题转换,首先将nums变换,如果一个num%m==k那么将它变为1,否则变为0,然后统计前缀和,然后一个区间中的个数cnt可以由两个前缀和相减得到,简单想法就是枚举区间,更优化的方法就是把式子变换一下,通过哈希储存,具体可以看代码,细节可以看灵神讲解,这里放出两个写法,一个是常规的,一个是合并的。

leetcode 第 361 场周赛_第4张图片

leetcode 第 361 场周赛_第5张图片

2846. 边权重均等查询

核心思想:求a-b的边数,统计a-b的所有边的值分别有多少个。求a-b的边数可以转换为r_a-r_lca+r_b-r_lac,所以我们不仅要求每个节点到根节点的距离,还要求出公共节点lca,lca由树上倍增来求的,然后统计a-b的所有边的值分别有多少个,分为两个部分,一个是y往上走的时候统计,一个是同时往上走的时候统计,然后最后是都往上走一步的时候统计,具体细节可以看灵神视频,这里就不再赘述了。

leetcode 第 361 场周赛_第6张图片

leetcode 第 361 场周赛_第7张图片

你可能感兴趣的:(算法,python)