自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

原创 全面解读系统更新,收藏下这份 Android 12 (S) 版本适配自查表

Android 12 是 2021 年 10 月发布的最新正式版本,然而很多同学表示还没有适配。针对开发者在进行版本适配过程中遇到的问题,我们建立了体系化的 Android 系统适配手册。

2022-04-21 14:13:36 7985

原创 Android 12 还没用上,Android 13 已经来了

Android 13 开发者预览版从 2022 年 2 月正式启动,3 月份 Google 已经发布了第 2 个开发者预览版。目前更新的内容主要还是围绕隐私和安全这个主题,我们会持续跟进官方的发布计划表,最终版本预计在今年年底发布。

2022-04-20 18:20:58 3670

原创 你的第一个 Jenkins 项目,从这里开始

Jenkins 是一个基于 Java 开发的持续集成工具,能够很简单地作为一个可扩展的自动化服务器,为项目提供持续集成(Continuous Integration)的能力

2022-04-09 17:17:17 2940

原创 从原理到实战,全面总结 Android HTTPS 抓包

你的支持对我意义重大!🔥 Hi,我是小彭。本文已收录到 GitHub · Android-NoteBook 中。这里有 Android 进阶成长路线笔记 & 博客,有志同道合的朋友,欢迎跟着我一起成长。(联系方式 & 入群方式在 GitHub)前言网络请求抓包是研发过程中常见问题,无论是开发时的接口调试,还是测试时的数据检验,都有网络抓包的需求。随着 HTTPS 协议的推广以及手机系统安全性的升级,抓包的门槛可能会逐渐变高;在这篇文章里,我将带你从原理到实战全面认识 HTTPS.

2022-04-08 15:08:17 8037 1

原创 LeetCode 周赛上分之旅 #49 再探内向基环树

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

2023-10-02 16:15:19 332

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

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

2023-10-01 03:14:08 394

原创 LeetCode 周赛上分之旅 #47 前后缀分解结合单调栈的贡献问题

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

2023-09-24 20:22:38 318

原创 LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解

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

2023-09-18 17:03:54 287

原创 LeetCode 周赛上分之旅 #45 精妙的 O(lgn) 扫描算法与树上 DP 问题

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

2023-09-18 01:52:09 195

原创 LeetCode 周赛上分之旅 #44 同余前缀和问题与经典倍增 LCA 算法

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

2023-09-06 00:21:24 544

原创 LeetCode 周赛上分之旅 #43 计算机科学本质上是数学吗?

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

2023-09-04 12:36:19 156

原创 LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗

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

2023-08-28 02:28:11 259

原创 LeetCode 周赛上分之旅 #41 结合离散化的线性 DP 问题

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

2023-08-21 01:18:46 178

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

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

2023-08-20 20:01:12 183

原创 LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题

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

2023-08-13 18:59:08 225

原创 LeetCode 周赛上分之旅 #38 结合排序不等式的动态规划

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

2023-08-07 18:25:44 250

原创 LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题

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

2023-08-07 12:27:43 135

原创 LeetCode 周赛上分之旅 # 36 KMP 字符串匹配殊途同归

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

2023-08-01 19:42:41 155

原创 LeetCode 周赛上分之旅 #34 按部就班地解决动态规划问题

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

2023-07-23 23:53:45 111

原创 LeetCode 周赛上分之旅 #35 两题坐牢,菜鸡现出原形

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

2023-07-23 23:10:59 160

原创 Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?

Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等。可见,要成为 Android 高级工程师 Gradle 是必须掌握的知识点。

2023-07-17 00:27:08 294

原创 LeetCode 周赛上分之旅 #33 摩尔投票派上用场

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

2023-07-16 22:26:55 159

原创 数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟

这道题是 LeetCode 上的1040. 移动石子直到连续 II,难度是 Meduium,难度分是 2455。虽然是 Medium 题,但是打 Hard 标签一点也不为过。长期作为中等题的难度 Top1,直到去年被2289. 使数组按非递减顺序排列题挤下来。标签:模拟、贪心、排序、同向双指针。

2023-07-11 20:51:14 174

原创 LeetCode 周赛 353(2023/07/09)看似没考 LIS 最长递增子序列,好像又考了

类似,但本题中每次操作可以跳转到的位置需要满足 nums[j] - nums[i] ≤ target,而跳跃游戏中可跳转的位置是 [i - nums[i], i + nums[i]],且每次只能向右跳(j > i)。容易想到,对于位置 nums[i] 来说,必然存在从 nums[0, i - 1] 中的某个位置跳转得来,即 dp[i] = dp[j] + 1,可以用动态规划实现。对于每个位置 i,当且仅有选择 num1[i] 或 nums2[i] 两种选择,需要思考「选哪个」。

2023-07-11 00:23:53 157

原创 LeetCode 周赛(2023/07/08)渐入佳境

所以我们的算法是:枚举所有黑色格子,并记录黑色格子可以产生贡献的块,最后统计出所有可以被影响到的块以及的贡献度,这可以用散列表来记录。在每部操作中,我们会将位置 moveFrom[i] 上所有的石头移动到 moveTo[i] 上,「所有」的含义意味着石头的数量是无关紧要的,我们可以使用散列表维护剩余的石头,最后对剩余石头排序。剩下一个问题是怎么表示一个唯一的块,我们可以规定块中 4 个点中的其中一个点作为块的代表元(以右下角的点为例),然后将该点的行和列压缩到一个 Long 变量中来唯一标识不同的块。

2023-07-11 00:06:34 221

原创 LeetCode 周赛 352(2023/07/02)一场关于子数组的专题周赛

为了避免重复计算,我们规定排序后最左边的 3 来自于当前子数组中最右边的 3,因此在预处理后缀数组时,我们要使用 Math.min(ids[nums[i]], ids[nums[i] - 1]) 来中断遍历。使用逆向思维,我们考虑每个元素 nums[i] 能够贡献的不平衡度,以 nums[i] 为中心点向左右扩展直到遇到最近的 nums[i] - 1,使用乘法原理可以计算出 nums[i] 对多少个子数组产生贡献度。因此,当 n 为奇数时,只需要判断 n - 2 是否为质因子即可,且仅存在唯一的匹配。

2023-07-04 22:28:20 337

原创 LeetCode 周赛 351(2023/06/25)T2 有点意思

然而,这个思路是有陷阱的,比如说操作 4 次后的二进制位中 1 的个数只有 3 个,按照上面的思路是非法的,但事实上我们依然可以通过操作 4 次来清零(-1、-4、-8 ⇒ 将 -8 拆分为 2 次 -4,总的操作次数就是 -1、-4、-4、-4);综上所述,令 x 为 num1 - k * num2,y 为 x 二进制位中 1 的个数,从 1 开始枚举 k,那么当满足 y ≤ k 且 x ≥ k 时,必然可以通过 k 次操作清零。那么我们的问题就转换为是否存在 k,使得 nums1 - k。

2023-06-26 02:27:21 250

原创 LeetCode 双周赛 107(2023/06/24)滑动窗口与离散化

需要注意题目中的单调性,对于日志时间 log_i < log_j,当 log_i 时间晚于 query_k 时,那么日志时间更晚的 log_k 必然无法投递到 query_k 中,而暴力算法中没有利用单调性质。因此,我们先对 log 日志列表和 queries 查询列表按时间顺序排序,再来使用滑动窗口来维护每个查询中覆盖的日志信息。ABAB 置于结果中间,再将 AA 或 BB 置于两边。线性扫描日志,并线性扫描查询列表,将日志记录投递到对应的查询中,同时使用散列表对相同服务器去重。

2023-06-26 02:16:16 278

原创 LeetCode 周赛 350(2023/06/18)01 背包变型题

使用状态压缩可以解决这个问题,我们定义 f(x, s) 表示最后选择 x,且已选择列表为 s 的情况下的方案数,其中 s 中的二进制位表示不同下标的数的选择与未选择状态,通过 s 就可归纳多种排列方案,最后我们使用备忘录来剪枝。其中对于 j < t 的情况,由于 j 表示付费刷墙时间之和,而 t 表示刷第 i 面墙的时间。如果 j - t < 0,那么等于刷墙之后丢弃一部分付费刷墙时间,此时的花费不会最坏不会差过从初始状态选第 i 墙的开销,即 dp[i-1][Math.max(j-t,0)] + c。

2023-06-19 14:04:37 150

原创 LeetCode 双周赛 106(2023/06/10)两道思维题

由于两个机器人的距离公式是 x - y,那么对于每个机器人 nums[i],在距离公式中它将作为 i 次 x 做加法,以及作为 (n -1 - i) 次 y 做解法,可以枚举每个机器人对距离公式的贡献度而算出整体的两两距离和。当相邻重复对 repeatCnt 大于 1 时,此时需要收缩左指针,如果左指针与右边后一个位置相同,说明减少一个相邻重复对(由于 repeatCnt 大于 1 时左指针不可能超过窗口,所以不需要检查左指针移动越界)。维护滑动窗口,如果右指针与前一个位置相同,说明增加一个相邻重复对。

2023-06-11 16:16:57 360

原创 LeetCode 周赛 348(2023/06/05)数位 DP 模板学会了吗

我们只需要考虑 1 和 n,每次操作可以把 1 向左边移动一位,或者将 n 向右移动一位,但是考虑到 1 和 n 的移动方向有交叉时,要减少一次操作次数。1、定义 f(n) 表示 [1,n] 中满足条件的好整数,那么原问题的解为:f(num2) - f(num1) + if(num1)那么,在每次行操作中可以填充的次数就是该行中没有被操作过的列数,而每次行操作中可以填充的次数就是该列中没有被操作过的行数。以 n = 234 为例。

2023-06-05 00:23:41 183

原创 LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题

LeetCode 第 347 场单周赛,T4 是结合 LIS 最长递增子序列的动态规划问题

2023-05-28 15:21:13 355

原创 LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题

LeetCode 少有的难题,排进历史 Top 10 没问题吧?

2023-05-22 13:25:02 336

原创 LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美

大家好,我是小彭。这场周赛是 LeetCode 第 345 场单周赛,整体难度不高,我们使用一题多解的方式强化练习。

2023-05-15 19:31:59 380 1

原创 LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考

大家好,我是小彭。今天是 LoeetCde 双周赛第 104 场,整体评价 T3、T4 不错,需要用到很多大数处理技巧。

2023-05-14 23:47:21 127

原创 LeetCode 周赛 344(2023/05/07)手写递归函数的固定套路

大家好,我是小彭。今天下午有力扣杯战队赛,不知道官方是不是故意调低早上周赛难度给选手们练练手。

2023-05-07 21:54:37 200

原创 LeetCode 周赛 343(2023/04/30)结合「下一个排列」的贪心构造问题

大家好,我是小彭。今天是五一假期的第二天,打周赛的人数比前一天的双周赛多了,难道大家都只玩一天吗?这场周赛是 LeetCode 第 343 场单周赛,如果不考虑第一题摆烂的翻译,整体题目质量还是很不错哒。

2023-05-05 23:16:43 263

原创 LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用

大家好,我是小彭。这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没有少太多。这场比赛前 3 题比较简单,我们把篇幅留给最后一题。

2023-05-04 15:46:43 231

原创 LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB

大家好,我是小彭。前天刚举办 2023 年力扣杯个人 SOLO 赛,昨天周赛就出了一场 Easy - Easy - Medium - Medium 的水场,不得不说 LeetCode 是懂礼数的 😁。接下来,请你跟着小彭的思路,一步步将问题做难,再将问题做简单。

2023-04-24 21:29:25 238

原创 LeetCode 周赛 341 场,模拟 / 树上差分 / Tarjan 离线 LCA / DFS

上周末有单双周赛,双周赛我们讲过了,单周赛那天早上有事没参加,后面做了虚拟竞赛,然后整个人就不好了。前 3 题非常简单,但第 4 题有点东西啊,差点就放弃了。最后,被折磨了一个下午和一个大夜总算把第 4 题做出来了,除了新学的 Tarjon 离线算法,这道题还涉及到树上差分、前缀和、DFS、图论等基础知识,几度被折磨得想要放弃。这种感觉,似乎和当年在 LeetCode 上做前 10 题的时候差不多哈哈。加油吧,没有什么经验是随随便便能够获得的,默默努力,愿君共勉。

2023-04-20 18:23:53 249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除