自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梁超杰

不积跬步无以至千里

  • 博客(321)
  • 资源 (5)
  • 收藏
  • 关注

原创 CSDN去广告插件

如果这篇博客被CSDN相关工作人员审核到,请你转告你们产品或者商务主管庞大的程序员群体不是你们这些无耻商人的待宰羔羊用csdn快3年了吧,写了200多篇博客,刚开始用的时候充满了期待,觉得这是一个能记录我成长的平台但是随着广告的无孔不入我开始慢慢怀疑CSDN是不是下一个视觉中国!侵权不去保护,广告肆意展示,联合百度的大数据分析和广告的投放,让很多程序员感觉得到了恶心!我们不反对你们盈利但...

2019-04-28 22:57:13 1155 1

原创 LeetCode热题100——11. 盛最多水的容器

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

2025-07-31 16:29:18 212

原创 算法基础——二分查找

二分查找算法是一种在已排序数组中,通过将搜索区间反复划分为两半的搜索算法。二分查找的思想是利用数组已排序的信息,将时间复杂度降低到 O(log N)有两种方法实现二分查找 (迭代和递归)

2025-07-31 11:29:00 174

原创 LeetCode热题100——739. 每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

2025-07-30 16:57:13 244

原创 LeetCode热题100——155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。

2025-07-29 22:11:31 431

原创 LeetCode热题100——46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:nums 中的所有整数 互不相同。

2025-07-29 12:16:17 262

原创 LeetCode热题100—— 20. 有效的括号

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([])”输出:true示例 5:输入:s = “([)]”

2025-07-28 21:11:49 147

原创 LeetCode热题100——142. 环形链表 II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。不允许修改 链表。

2025-07-28 17:56:24 293

原创 LeetCode热题100——141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。

2025-07-28 16:59:32 160

原创 LeetCode热题100——41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]输出:3解释:范围 [1,2] 中的数字都在数组中。示例 2:输入:nums = [3,4,-1,1]输出:2解释:1 在数组中,但 2 没有。示例 3:输入:nums = [7,8,9,11,12]输出:1解释:最小的正数 1 没有出现。

2025-07-24 17:50:27 276

原创 LeetCode热题100——560. 和为 K 的子数组

我们遍历数组时记录当前前缀和 pre,每次判断是否存在一个之前的前缀和 pre - k,如果存在,说明从该位置之后到当前位置的和就是 k,计数加上这个前缀和出现的次数。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。若 pre[j] - pre[i] == k,说明 nums[i…j-1] 的和为 k。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。我们要找的是:有多少个连续子数组的和为 k。

2025-07-24 16:50:27 259

原创 LeetCode热题100——3. 无重复字符的最长子串

滑动窗口,一个快指针先走,一个慢指针后走,通过不断调整快慢指针的间隔来找到最大长度。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”

2025-07-24 16:29:25 342

原创 LeetCode热题100——128. 最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

2025-07-24 14:13:50 219

原创 LeetCode热题100——49. 字母异位词分组

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]字符串 “ate” ,“eat” 和 “tea” 是字母异位词,因为它们可以重新排列以形成彼此。输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]字符串 “nat” 和 “tan” 是字母异位词,因为它们可以重新排列以形成彼此。可以按任意顺序返回结果列表。输入: strs = [“a”]输入: strs = [“”]输出: [[“a”]]输出: [[“”]]

2025-07-24 13:03:40 192

原创 LeetCode热题100—— 238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

2025-07-17 14:24:50 326

原创 LeetCode热题100—— 152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。示例 1:输入: nums = [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: nums = [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。提示:nums 的任何子数组的乘积都 保证 是一个 32-位 整数。

2025-07-09 19:55:53 343

原创 LeetCode热题100—— 32. 最长有效括号 (hard)

https://leetcode.cn/problems/longest-valid-parentheses/description/?envType=study-plan-v2&envId=top-100-liked给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”

2025-07-09 15:02:26 315

原创 Java实现快速排序

代码中稍作改动,先从左往右遍历发现,原本1应该是在第一个位置,但是满足 nums[i] <= pivot 会被移动到第二个位置。不是,可以选其他位置,例如中间或者最右侧,选择最左边是简化逻辑。空间复杂度:O(log n)(递归调用栈)平均时间复杂度:O(n log n)最坏时间复杂度:O(n²)

2025-07-02 15:27:32 270

原创 LeetCode热题100—— 94. 二叉树的中序遍历

【代码】LeetCode热题100—— 94. 二叉树的中序遍历。

2025-06-24 17:21:44 294

原创 LeetCode热题100—— 35. 搜索插入位置

在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。

2025-06-24 16:06:52 174

原创 LeetCode热题100—— 160. 相交链表

runner1 从 headA跑,跑完a的长度再跑一个 b-c的长度。runner2 从headB跑, 跑完b的长度再跑一个 a-c的长度。这样两者最终会在 c 相见!

2025-06-23 20:00:05 246

原创 LeetCode热题100—— 118. 杨辉三角

【代码】LeetCode热题100—— 118. 杨辉三角。

2025-06-20 17:24:32 224

原创 LeetCode热题100—— 169. 多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]

2025-06-20 14:04:20 247

原创 LeetCode热题100—— 136. 只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。2 ^ 1 ^ 2 = 2 ^ 2 ^ 1 = 1 ,把相同的数字都异或成0之后,剩下的就是那个出现1次的数字。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。^ 异或运算符可以方便解决这个问题,例如数组为 [2,1,2]除了某个元素只出现一次以外,其余每个元素均出现两次。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]输入:nums = [1]

2025-06-20 13:14:05 133

原创 Java基础361问第16问——枚举为什么导致空指针?

原来Color是一个继承了 Enum的特殊类,里面有一个 ordinal() 方法,当我们使用 switch去传入 color时,编译器内部会调用 Color的ordinal()方法去获取int值,此时出现了 空指针。运行一下,发现了 空指针 Color.ordinal()’ on a null object reference。

2025-04-28 23:18:20 225

原创 LeetCode热题100——70. 爬楼梯

动态规划,例如爬3阶的方法数 = 爬2阶 + 爬1阶的,因为3阶要么是从1阶+2来的,要么是从 2阶+1来的,总体满足, f(n) = f(n-1)+f(n-2)每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?能不能直接使用递归去解决呢?这里有很大的坑在等着你!需要 n 阶你才能到达楼顶。解释:有两种方法可以爬到楼顶。解释:有三种方法可以爬到楼顶。

2025-04-26 23:06:32 302

原创 LeetCode热题100——283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]输入: nums = [0]

2025-04-23 22:17:16 507

原创 LeetCode热题100——1. 两数之和

和为目标值 target,并且要记忆它的下标,给定任意一个nums[i] 既要知道 有没有 nums[x] 满足 nums[i]+nums[x] = target, 又要知道x,即。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。,我们要存储一对键值 nums[x] , x,所以使用。输入:nums = [3,3], target = 6。

2025-04-22 22:37:29 241

原创 如何免费阅读Medium文章?

是一个优秀的博客分享平台,可以阅读老外对编码技术的总结,让我们吸取原汁原味的编码思想,国内的博客大多是舶来品,很多时候夹杂了个人的错误理解导致消息失真,让新手读起来总是感觉灰涩难懂。可是原博客的文章大多数是需要付费的,如何解决?把原博客复制到下面的网站,然后就可以解锁阅读了。

2025-03-31 22:57:30 506

原创 记一次 Android 高内存排查

本文未使用Android Studio内置Profile分析工具,其一是因为使用时AS明显卡顿一不小心就会无响应,其二部分应用无法连接AS 抓取日志,因此采取最原始但是最万能的方式 adb 抓取 + MAT分析。

2024-12-25 23:15:37 510

原创 ANR 分析SOP

遇到ANR问题不要慌,大部分情况下可能是系统or测试手段问题,我们按照如下关键字排查定位。

2024-12-11 23:26:41 260

原创 Android Studio 无法查看Kotlin源码的解决办法

导入过程要耐心等待一会, 重新点击就可以查看源码了。

2024-10-29 23:42:39 776 1

原创 简单易用的Android主线程耗时检测类 MainThreadMonitor

适用场景 debug 本地测试。

2024-10-28 23:01:31 446

原创 Glide 简易教程

文章目录1 引入依赖2 图片形状2.1 圆形 CircleCrop2.2 旋转 Rotate2.3 圆角 RoundedCorners2.4 自定义圆角 GranularRoundedCorners1 引入依赖implementation("com.github.bumptech.glide:glide:4.16.0")2 图片形状2.1 圆形 CircleCropGlide.with(this).load(url).transform(CircleCrop()).into

2024-10-16 23:36:33 407

原创 MacOS安装MAT教程

如果不知道你的芯片类型, 可以执行如下命令。

2024-09-18 22:56:19 972

原创 App应用冷启动耗时排查

发现冷启动耗时居然要6s多,下面开始排查。

2024-08-25 23:42:15 454

原创 Ubuntu 整编 AOSP

作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。

2024-05-23 00:15:29 817

原创 Mac 运行 C/C++代码

【代码】Mac 运行 C/C++代码。

2024-04-26 14:24:12 1044

原创 Mac反编译APK

https://github.com/pxb1988/dex2jar/releases/ 官方Github介绍&下载地址。

2024-04-01 23:36:52 1493 2

原创 谈谈我对Gson源码的理解

fill:#333;GsonBoundFieldfromJson()可能存在递归调用栈溢出的地方getBoundFields() 获取该类所有字段createBoundField() 每个字段去找自己的getAdapter()read()construct() 反射创建对象遍历每个字段调用 read() 赋值每个BoundField对应的TypeAdapter处理 read()GsonBoundField注意蓝色区域, 这里有可能存在递归调用的风险, 我们来举例说明。

2024-02-25 22:01:29 1054

通讯录字母列表索引

相信大家对这个列表字母索引已经不陌生了,在很多app中也随处可见,像没团的城市地址选择,微信联系人列表,手机通讯录…等等。既然是个这么nb这么实用的功能我们怎么能不Get到来呢,下面就让我们一起造一个出来吧

2018-02-26

Android实现快速发送电子邮件

最近有朋友有需求是通过apk发送邮件,我心想这怎么可以实现?然后就研究了一番,最后得出结论是可行的! 确实可以自己的手机上定义主题和内容或者附件,然后发送给对应的邮箱!详细步骤倾听我一一道来

2018-10-31

android扫码登录

Android 快速实现扫描识别二维码(即扫码登录功能) 扫码登录现在很流行,淘宝,京东,熊猫直播各大网站都有扫码登录功能,其实呢对于客户端来说扫码登录很简单,因为难点都集中在了前端身上,我简单讲下扫码登录的流程:

2018-10-27

channelApk.zip

下载这个channelApk 文件夹,然后将release apk拷贝进src_apk文件下并命名,随后执行buildChannels.sh脚本,等待一会就可以看到output中就是你的渠道包文件啦。

2019-08-13

CheckUtils

判断用户输入的字符串是不是身份证号,邮编号,手机号,银行卡号和日期

2016-12-30

空空如也

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

TA关注的人

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