自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (4)
  • 收藏
  • 关注

原创 新版AS Logcat使用

在标准布局下,或者我们的log太长的时候,一屏通常展示不下,我们需要不停的向右滑动,滚动才能看到log的信息,我们可以用log view左侧的Soft-Wrap 按钮来让log换行。左侧的Pause按钮可以暂停logcat的输出,方便看错误日志,可以避免关心的日志被新的日志冲掉。Stand View会展示每一条log的日期,时间,进程线程id,tag,包名,log level以及message。age:让窗口中只保留最近一段时间的log,值为数字加单位,s表示秒,m表示分钟,h表示小时,d表示天。

2023-05-29 10:45:11 3658

原创 APK打包和签名

APK(Android application package)需要将所有内容打包成为一个被Android系统所能识别的文件,才可以被运行,一个apk文件内包含被编译的代码文件(.dex 文件),文件资源(resources), 原生资源文件(assets),证书(certificates),和清单文件(manifest file)。优点是不再需要一个apk来包含所有类型的安卓设备的所有内容,开发者只需要根据需求上传更新,减少了应用程序安装包的大小体积。都是用来打包的,并保证应用的唯一性。

2023-05-16 19:06:57 4986

原创 【Dart】2、Dart 基本语法

Dart基本语法摘要 本文介绍了Dart语言的基本语法,主要内容包括: 变量与常量: 使用var声明变量或直接指定类型(如String、int) dynamic表示动态类型变量 final和const声明常量,区别在于const要求编译时常量值 数据类型: 数字类型:int(整数)和double(双精度浮点数)及其常用方法 布尔类型:bool值true/false 字符串:支持多行、插值表达式和原始字符串(r'') 枚举:通过enum定义,默认从0开始编号 其他语法: 标识符规则(字母/数字/下划线/$开头

2025-10-23 16:09:11 572 1

原创 【Dart】1、Dart 环境配置

本文介绍了Dart开发环境的搭建步骤:首先通过PowerShell以管理员身份安装Chocolatey包管理器,运行指定命令后验证安装成功;然后使用Chocolatey安装Dart SDK,自动下载并解压到C:\tools目录,配置环境变量后可通过dart --version命令验证安装。整个过程包含详细命令和安装输出日志,最终完成Dart 3.9.4版本的开发环境配置。

2025-10-23 16:07:09 949 1

原创 LeetCode 算法题【中等】2. 两数相加

这篇文章介绍了LeetCode上"两数相加"问题的解法。题目要求将两个逆序存储数字的链表相加,返回同样逆序的结果链表。作者提供了Java实现方案,通过同时遍历两个链表,逐位相加并处理进位。时间复杂度为O(max(M,N)),空间复杂度为O(max(M,N))。关键点在于处理不同长度链表和最后的进位情况,使用虚拟节点简化链表构建过程。代码清晰展示了如何通过while循环实现这一算法。

2025-10-17 17:48:40 137

原创 Android 内存优化

内存泄漏与内存溢出的区别及案例分析 内存泄漏(Memory Leak)指程序申请内存后未正确释放,导致内存无法回收,长期积累会导致内存溢出(OOM)。典型例子包括单例持有Activity引用、非静态内部类、匿名内部类、线程未关闭等。文中通过代码示例展示了正常Activity回收与单例导致泄漏的对比,并介绍了Heap Dump和LeakCanary两种检测工具的使用方法。 内存溢出(OOM)则是系统无法满足程序内存需求的情况。通过分析Shallow Size和Retained Size等内存指标,可以定位内存

2025-10-17 16:12:13 399

原创 LeetCode 算法题【中等】155. 最小栈

摘要:LeetCode 155题要求设计一个能在常数时间内获取最小值的栈。个人解法使用ArrayList存储数据,但getMin()方法需要遍历列表效率较低。官方解法采用双栈结构:主栈存储数据,辅助栈同步存储当前最小值。每次push操作时,辅助栈压入当前值与栈顶值的最小值,保证栈顶始终为最小值。该方法使所有操作(push、pop、top、getMin)均保持O(1)时间复杂度,更符合题目要求。

2025-10-16 14:55:48 204

原创 LeetCode 算法题【简单】205. 同构字符串

摘要: LeetCode 205题要求判断两个字符串是否同构,即字符可以一一映射且保持顺序。采用哈希表存储字符映射关系,遍历字符串时检查:相同字符必须映射到同一字符,不同字符不能映射到同一字符。时间复杂度O(N),空间复杂度O(N)。示例代码通过HashMap实现双向验证,确保映射唯一性。

2025-10-16 14:00:36 161

原创 LeetCode 算法题【简单】290. 单词规律

文章摘要: LeetCode 290题要求判断字符串s中的单词是否与给定模式pattern的字符形成双向唯一映射关系。解题思路是利用哈希表分别记录字符到单词和单词到字符的映射,确保不存在冲突的对应关系。核心步骤包括:分割字符串s为单词数组,检查长度是否匹配;遍历pattern和单词数组,用哈希表验证双射关系。时间复杂度为O(n+m),空间复杂度为O(n+m)。代码通过比较哈希表中的已有映射来确保一一对应,若发现冲突则返回false。该方法有效解决了字符与单词的双射匹配问题。

2025-10-16 11:41:08 327

原创 【华为OD机试】投篮大赛 100分

题目要求模拟投篮大赛得分记录系统,根据操作字符串数组处理不同指令(数字、"+"、"D"、"C"),计算有效得分总和。使用栈结构存储得分,处理指令时需检查栈内元素数量是否满足操作要求(如"+"需2个元素,"D"和"C"需1个元素)。若操作非法则返回-1。代码通过遍历指令数组,用switch-case处理不同指令,维护得分列表并最终求和。示例验证了合法操作和异常情况的处理逻辑。

2025-10-15 13:45:04 992 1

原创 LeetCode 算法题【简单】303. 区域和检索 - 数组不可变

摘要:LeetCode 303题要求实现一个类,能够快速计算数组指定区间的和。个人解法通过直接遍历区间求和,但效率较低。官方推荐使用前缀和优化,预先计算并存储前缀和数组sums,其中sums[i+1]表示nums[0]到nums[i]的和。查询区间和时只需计算sums[right+1] - sums[left],时间复杂度降为O(1)。这种方法显著提升了多次查询的性能,适用于频繁调用sumRange的场景。

2025-10-15 10:19:16 172

原创 LeetCode 算法题【简单】383. 赎金信

摘要:LeetCode 383题要求判断ransomNote字符串是否能由magazine中的字符构成。解题思路是使用长度为26的数组统计每个字母在magazine中的出现次数,然后遍历ransomNote逐个扣除对应字母的计数,若出现负数则返回false。该方法的时间复杂度为O(N),空间复杂度为O(1)。示例验证了算法的正确性。

2025-10-15 10:06:42 309

原创 LeetCode 算法题【困难】41. 缺失的第一个正数

这是一篇关于LeetCode第41题"缺失的第一个正数"的题解文章。文章首先给出了题目链接和标签,然后提供了个人和官方两种解法。个人解法使用HashSet存储元素,但空间复杂度为O(N)不符合要求;官方解法通过原地修改数组标记出现过的数字,实现了O(1)的空间复杂度。两种解法的时间复杂度均为O(N),但官方解法更优,符合题目对空间复杂度的要求。文章配有图示说明官方解法的思路。

2025-10-14 13:50:25 407

原创 LeetCode 算法题【中等】189. 轮转数组

LeetCode 189题要求将数组元素向右轮转k个位置。个人解法使用额外数组存储原数组,时间复杂度O(N),空间复杂度O(N)。官方解法更优,通过三次数组反转实现原地操作:先整体反转,再分别反转前k个和后n-k个元素,空间复杂度降至O(1)。两种方法都处理了k大于数组长度的情况。进阶要求使用O(1)空间复杂度的解法已由官方方法实现。

2025-10-14 13:42:23 268

原创 LeetCode 算法题【中等】238. 除自身以外数组的乘积

文章摘要 LeetCode 238题要求计算数组中每个元素除自身外的乘积,不能使用除法且需O(n)时间复杂度。解法思路是分别计算每个元素左侧和右侧的乘积(前缀与后缀),然后将两者相乘得到结果。个人解法使用两个数组分别存储前缀和后缀乘积,空间复杂度O(n)。官方优化解法仅使用输出数组存储前缀乘积,同时用变量R动态维护后缀乘积,将空间复杂度降至O(1)。两种方法均满足时间复杂度要求,但官方解法更优。 关键词:数组乘积、前缀后缀、O(n)时间复杂度、空间优化

2025-10-13 13:52:58 230

原创 LeetCode 算法题【简单】20. 有效的括号

这篇文章介绍了LeetCode上"有效的括号"问题的两种解法。作者首先给出了题目描述和示例,然后分别展示了自己的写法和官方优化写法。两种解法都使用栈结构,时间复杂度均为O(N),空间复杂度O(N)。作者解法直接判断括号匹配,官方解法则利用哈希表存储括号对,减少重复判断。两种方法的核心思路都是通过栈来验证括号的正确闭合顺序和类型匹配。最后都通过检查栈是否为空来判断字符串有效性。

2025-10-13 11:01:12 491

原创 LeetCode 算法题【中等】53. 最大子数组和

本文介绍了LeetCode上最大子数组和问题的两种解法。问题要求找出一个整数数组中连续子数组的最大和。第一种解法采用双重循环遍历所有子数组,时间复杂度为O(N²)。第二种官方解法使用动态规划,定义limit[i]表示以nums[i]结尾的子数组最大和,通过递推公式计算,时间复杂度优化至O(N),空间复杂度为O(N)。两种方法都能正确解决问题,但动态规划方法效率更高。

2025-10-12 12:00:00 436

原创 LeetCode 算法题【中等】56. 合并区间

文章摘要: LeetCode第56题《合并区间》要求将给定的一组区间合并所有重叠部分,返回不重叠的区间数组。解题关键是对区间按左边界排序后依次比较:若当前区间左边界大于结果集中最后一个区间的右边界,则直接添加;否则合并更新右边界。示例展示了不同重叠情况的处理方式。个人解法使用Java实现,通过自定义排序和动态合并策略,时间复杂度为O(NlogN)(主要来自排序),空间复杂度O(N)。该问题考察数组处理和排序算法的应用。

2025-10-12 12:00:00 181

原创 LeetCode 算法题【简单】160. 相交链表

本文介绍了LeetCode 160题"相交链表"的两种解法。个人解法使用HashMap存储第一个链表节点,空间复杂度O(M);官方推荐使用HashSet,同样实现O(M+N)时间复杂度。两种方法都通过遍历链表查找交点,但HashSet在代码简洁性和内存使用上更优。题目链接包含图示说明,属于链表和哈希表类高频面试题。

2025-10-11 09:49:51 151

原创 LeetCode 算法题【中等】300. 最长递增子序列

本文介绍了LeetCode 300题「最长递增子序列」的解法。题目要求在整数数组中找到最长严格递增子序列的长度。个人和官方解法都采用动态规划思路,时间复杂度O(N²),空间复杂度O(N)。关键是用数组max[i]记录以nums[i]结尾的最长子序列长度,通过比较前面元素的状态来更新当前值,最后取全局最大值。官方解法在变量使用上更简洁,但核心思路一致。该题进阶要求是将复杂度优化到O(n log(n))。

2025-10-11 09:44:06 487

原创 LeetCode 算法题【中等】152. 乘积最大子数组

该文章讨论了LeetCode中"乘积最大子数组"问题的两种解法。暴力解法通过双重循环遍历所有子数组,时间复杂度O(N²)。更优的动态规划解法使用max和min数组记录以当前元素结尾的子数组极值,通过比较当前元素与前一个极值的乘积来更新极值,时间复杂度O(N)。关键点在于同时维护最大和最小值,以处理负数乘法的特殊情况。两种解法都确保了结果在32位整数范围内。

2025-10-10 11:37:57 560

原创 LeetCode 算法题【中等】198. 打家劫舍

题目描述了一个动态规划问题,要求在不触发警报(不能连续偷窃相邻房屋)的情况下,计算小偷能获得的最大金额。解题思路是:对于每个房屋,选择偷或不偷,取两种选择中的最大值。用dp[i]表示前i间房屋能偷到的最高金额,状态转移方程为dp[i] = max(dp[i-2] + nums[i], dp[i-1])。最终返回dp数组的最后一个元素即可。该算法时间复杂度为O(N),空间复杂度为O(N)。

2025-10-10 09:48:22 210

原创 LeetCode 算法题【简单】118. 杨辉三角

本文介绍了LeetCode第118题"杨辉三角"的解法。题目要求生成前numRows行的杨辉三角,其中每个数是其左上方和右上方数的和。个人解法采用动态规划思路,通过边界补零处理避免数组越界,时空复杂度均为O(N²)。官方推荐解法类似,但直接处理左右边界为1,代码更简洁。两种方法都通过双重循环实现,外层控制行数,内层计算每行元素值。

2025-10-09 15:15:39 780

原创 LeetCode 算法题【简单】70. 爬楼梯

本文介绍了LeetCode第70题"爬楼梯"的两种解法。第一种是动态规划方法,通过状态转移方程dp[n]=dp[n-1]+dp[n-2]计算爬n阶楼梯的方法数,时间复杂度O(n)。第二种利用斐波那契数列通项公式直接计算结果,时间复杂度优化至O(1)。两种方法都给出了对应的Java代码实现,其中动态规划更直观,而数学公式法效率更高。

2025-10-09 14:12:17 438

原创 LeetCode 算法题【简单】283. 移动零

本文介绍了LeetCode 283题"移动零"的两种解法。第一种解法采用双重循环,时间复杂度O(N²),通过交换0与后续第一个非零数来实现;第二种更优解法使用单次遍历,维护一个索引指针,将非零元素依次前移并交换,时间复杂度O(N)。两种方法都满足原地操作的要求,第二种在效率上有明显提升,适合处理大规模数据。文章包含题目描述、示例、个人初始解法及优化解法的详细代码实现和复杂度分析。

2025-09-30 11:08:48 307

原创 LeetCode 算法题【简单】49. 字母异位词分组

摘要:LeetCode 49题要求将字母异位词分组。解题思路是对每个字符串排序后作为哈希表的键,相同键的字符串归为一组。时间复杂度为O(NMlogM),其中N是字符串数量,M是字符串长度;空间复杂度为O(NM)。通过排序和哈希表操作,最终返回分组结果。示例展示了如何将["eat","tea","tan"]分组为[["ate","eat","tea"],["nat",&q

2025-09-30 10:17:11 297

原创 【1、Kotlin 基础语法】2、Kotlin 变量

Kotlin基础语法摘要: 注释支持单行、多行及嵌套注释,比Java更灵活 采用类型推导机制,变量必须声明类型或初始化 提供var(可变)和val(不可变)两种变量声明方式 const val为编译时常量,与val(运行时常量)有显著区别 所有类型都是对象,但编译器会优化为基本类型 变量声明时需同时满足类型确定和初始化条件 const常量仅支持顶层声明和基本类型/字符串字面量

2025-09-26 14:59:25 266

原创 LeetCode 算法题【简单】338. 比特位计数

本文介绍了LeetCode 338题「比特位计数」的三种解法。基础解法通过逐位取余计算1的个数,时间复杂度O(NLogN)。优化解法1利用Brian Kernighan算法(x &= x-1)快速消除最低位的1,同样达到O(NLogN)。最优解法2采用动态规划,利用bits[x]=bits[x&(x-1)]+1的关系,实现O(n)时间复杂度的线性扫描。三种方法的空间复杂度均为O(n),其中动态规划解法最优,能在常数空间内完成计算。该题考察位运算和动态规划的应用。

2025-09-26 14:55:08 415

原创 【1、Kotlin 基础语法】1、Kotlin 概述

替代Java适用于现今使用Java的所有环境服务端Android。

2025-09-25 16:58:36 915

原创 LeetCode 算法题【简单】206. 反转链表

本文介绍了LeetCode 206题“反转链表”的三种解法。第一种是个人写法,通过遍历原链表,将每个元素作为新链表的头节点,时间复杂度O(n)。第二种是双指针法,使用前后指针逐个反转节点指向,同样O(n)复杂度。第三种是递归解法,通过递归到链表末端后逐步反转节点指向,空间复杂度O(n)。文章提供了每种方法的代码实现和示意图解,帮助理解链表反转的核心思路。题目要求反转单链表,三种解法各有特点,适合不同场景选择使用。

2025-09-25 16:54:04 913

原创 LeetCode 算法题【中等】7. 整数反转

题目要求反转32位有符号整数,若反转后超出范围则返回0。两种解法对比:个人写法通过字符串转换实现,时间复杂度O(logx),但需额外空间存储字符串;更优解法则在数字层面处理,通过数学运算逐位反转并实时检查溢出,时间复杂度相同但空间复杂度优化至O(1)。后者通过预判边界避免溢出,效率更高,推荐使用数学解法。关键点在于处理负数、零以及边界条件,尤其注意Integer.MIN_VALUE的特殊情况。

2025-09-24 11:45:55 543

原创 LeetCode 算法题【简单】9. 回文数

本文介绍了判断整数是否为回文数的三种方法。方法1通过反转整个数字与原数比较,时间复杂度O(log x);方法2将数字转为字符串后比较前后半段,时间复杂度O(n);更优解仅反转数字的后半段与前半段比较,时间复杂度O(logN),空间复杂度均为O(1)。关键点在于处理负数、末尾为0的情况,以及奇数位数字的中位处理。进阶解法通过数学运算避免了字符串转换,效率更高。

2025-09-24 10:23:47 272

原创 LeetCode 算法题【简单】1. 两数之和

本文介绍了LeetCode"两数之和"问题的两种解法。基础解法使用双重循环遍历数组,时间复杂度为O(n²)。优化解法利用哈希表存储已遍历元素,只需单次遍历即可找到目标组合,将时间复杂度降至O(n)。两种方法分别适用于不同场景,前者代码简单但效率较低,后者通过空间换时间显著提升性能。文章包含题目链接、示例说明、代码实现及复杂度分析,适合算法学习者参考。

2025-09-23 15:48:42 274

原创 3-6、final

Java final用法

2023-12-13 13:31:34 461

原创 3-5、多态性

Java面向对象三大特性—多态性

2023-12-12 17:52:42 429

原创 3-4、继承性

Java面向对象三大特性—继承性

2023-12-12 17:47:33 440

原创 3-3、封装性

Java面向对象3大特性—封装性

2023-12-12 17:44:10 399

原创 3-2、修饰符和import

Java修饰符和import。

2023-12-12 17:38:02 415

原创 3-1、类的定义

Java类面向对象类的定义

2023-12-11 18:30:55 822

原创 2-7、转义字符

Java转义字符

2023-12-11 14:34:21 440

每日一歌西海情歌-刀郎

每日一歌西海情歌-刀郎

2025-07-29

Android实战1:更换头像(源码)

Android实战1:更换头像(源码)

2017-07-02

java单例设计模式

java单例设计模式

2016-07-31

Android四大组件ContentProvider

自定义ContentProvider的流程 ContentResolver访问通讯录数据库

2016-08-31

反编译apktool

打开cmd,切换到当前目录 *apktool d xx.apk 反编译apk文件 * apktool b test 把test文件夹打包成apk文件

2017-11-14

空空如也

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

TA关注的人

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