- 博客(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—— 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—— 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
原创 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
原创 Ubuntu 整编 AOSP
作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。
2024-05-23 00:15:29
817
原创 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
通讯录字母列表索引
2018-02-26
Android实现快速发送电子邮件
2018-10-31
android扫码登录
2018-10-27
channelApk.zip
2019-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人