自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

快乐李同学的博客

BiliBili/微博/微信公众号:快乐李同学 个人邮箱:lijunde6@foxmail.com

  • 博客(248)
  • 收藏
  • 关注

原创 谷歌应用商店上传aab大小可以超过150MB吗?Can the Android App Bundle‘s size be over 150MB?(Google Play, aab, Android)

This week, my Android App Bundle's size reached 161MB after introducing several new features. I was frightened that my aab's size exceeds the size limitation of Android App Bundles. But I tried to upload the oversize aab to the Google Play and it worked.

2022-11-25 12:21:01 233

原创 Java库常用的方法及其复杂度分析Common Java APIs and complexity analysis

Java库常用的方法及其复杂度分析Common Java APIs and complexity analysis

2022-10-09 23:07:32 226

原创 Java数组常用的工具方法和字段(Java Array‘s common methods and fields)

1 Mind Mapping of Java Array’s common methods and fields2 Practical Code Demopackage com.test;import java.util.Arrays;public class JavaArrayUsage { //This statement only declares a integer array variable `a`. It does not yet initialize `a` with

2022-01-20 23:53:15 293

原创 数学、键盘符号和时间复杂度的英语术语及表述方法(编程,标识符,按键,空间复杂度,指数,对数,模运算)

1 Math Symbols数学符号integral[ˈɪntɪɡrəl] a必须的 theta[ˈθɪtə]n希腊语字母表中第八个字母factorial[fækˈtɔːriəl]a阶乘的n阶乘 perpendicular[ˌpɜːrpənˈdɪkjələr]a垂直的2 Math Concept数学概念2.1 指数 exponent[ɪkˈspoʊnənt]exponent /ik’spounent/ n倡导者,(技能)擅长者;指数exponential /ekspe’nenshl/ a

2022-01-03 22:51:04 1880

原创 2022年最优解决方案Installed Build Tools revision 31.0.0 is corrupted

2021年12月11日的今天,博主我想构建最新版的安卓Telegram开源项目,其compileSdkVersio为31,buildToolsVersion为'31.0.0',也就是Android12相关的构建工具的版本号了。但是当我直接构建该项目,构建日志报错,根据构建报错信息"31.0.0版本的构建工具缺少了DX文件",以及StackOverflow的解决方案发现,31.0.0版本的构建工具缺少了"dx"和"dx.jar"这两文件,正确的做法就是复制对应路径的"d8"和"d8.jar"这两文件创建副本。

2021-12-12 00:44:22 4319 3

原创 Android万能布局检查器UI Automator Viewer使用教程、环境配置和Mac无法打开问题解决(uiautomatorviewer,android studio,layer,查看,错误)

1 问题背景作为Android开发者的我们一般用Android Studio自带的Layout Inspector(布局检查器)来检查可调试APP的实时布局层级:但是Layout Inspector有很大的局限性,它只能用来调试那些“可调试APP”,即该APP的AndroidManifest.xml文件中Application标签的android:debuggable属性的值为true:<?xml version="1.0" encoding="utf-8"?><manifest

2021-09-12 23:39:51 1013

原创 Java包注解和package-info.java文件的作用和用法

1 问题背景博主最近在深入学习Java注解,其中就了解到注解可用于修饰包声明,因为@Target元注解的value元素数组可以包含ElementType.PACKAGE元素,接着博主就发现@Deprecated注解就支持修饰包声明:package java.lang;import java.lang.annotation.*;import static java.lang.annotation.ElementType.*;@Documented@Retention(RetentionPolic

2021-09-04 23:43:56 1552

原创 Android Studio Arctic Fox的Git Log和搜索窗口中文乱码问题解决方案(关键词:AS,2020.3.1,显示错误,Find in Path,版块,方块,修复,新版本)

1 问题描述在2021年7月28日左右,大部分Android开发者都收到了Android Studio Arctic Fox 2020.3.1新版本安装包的推送。在版本更新新特性界面中它列举了一系列的新版本特性,如果你跟博主一样迫不及待地想体验这些新版本的特性,从而升级了Android Studio,你很有可能遇到下述的问题:在Android Studio的Git Log工具窗口和Find in Files窗口中,中文都会显示成乱码。上述截图中的Android的项目是Github开源的Andr

2021-08-01 17:22:53 2593 10

原创 3万字死磕Java泛型所有细节知识点,看这一篇就够了

1 泛型1.0 前言——为什么要死磕Java泛型不知道阅读这篇文章的你是否曾跟我一样,在没有阅读《Java核心技术》前查阅了大量的Java泛型文章,但是在实际使用泛型的过程中,总是觉得对泛型的理解不够深透。在撰写这篇文章之前,我自问了自己下述的问题,结果我自己却不能回答上来:泛型类中能用类型参数去定义static成员变量和static方法的返回值和形式参数吗?泛型方法的类型参数命名可以跟泛型类的类型参数重名吗?泛型方法可以是成员方法、static方法、final方法、private方法吗?泛型

2021-07-21 00:11:58 865

原创 配置JDK的javac命令输出英文信息(IntelliJ IDEA, 提示, 英语, 编译运行, Java, Windows, Mac)

配置JDK的javac命令输出英文信息(IntelliJ IDEA, 提示, 英语, 编译运行, Java, Windows, Mac)1 问题背景不知道大家跟博主有没有一样的想法:在配置IntelliJ IDEA等IDE后,虽然IDE操作界面的语言是英文的,但是由于电脑的环境语言是中文的,所以在IDE操作JDK的java或javac命令,JDK还是按照电脑的环境语言配置而输出中文的提示信息、报错信息等。由于我们更希望JDK的输出信息是英文版的,因为这样避免了英译中潜在的歧义,同时我们也可以通过英文的

2021-05-24 16:06:47 692 6

原创 2021年最详细的Android屏幕适配方案汇总

1 Android屏幕适配的度量单位和相关概念建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章包含了阅读本文的一些基础知识,推荐阅读。2 Android屏幕适配的解决方案2.1 Android屏幕适配前言Android屏幕适配是一个亘古不变的难题,在百度或者Google搜索相关的关键词,我们总能找到各个年代所流行的Android屏幕适配方法。但是由于时效性的原因,2021年的今天出现了新的Android屏幕适配方法,并淘汰了部分以前旧的And

2021-04-09 20:16:36 4921 4

原创 2021年最全Android屏幕适配的度量单位px dp(dip) ppi dpi sp pt的区别(最详细,屏幕尺寸,屏幕分辨率,屏幕兼容,屏幕适配)

1 Android屏幕适配相关概念1.1 屏幕尺寸(Screen Size)屏幕尺寸是屏幕的对角线的长度,单位是英寸,1英寸等于2.54厘米。比如常见的屏幕尺寸有3.5、4.0、5.5等。1.2 屏幕分辨率(Screen Resolution)屏幕分辨率是指在横向和纵向上的像素点数、单位是px(pixel),1px等于1个像素点,一般设备的屏幕分辨率以“纵向像素x横向像素”来表示,例如1920x1080。1.3 度量单位px、dp(dip)、ppi、dpi、sp、pt1.3.1 像素px(pix

2021-04-03 16:35:48 4666 15

原创 Android中drawable或mipmap文件夹存放图片的区别(详细解释)

1 问题背景当在Android Studio来新建一个Android项目,该项目有如下的目录结构:Android项目的某个模块中的res文件夹下,有很多以drawable或mipmap开头的子文件夹,这些子文件夹都是用来存储图片的,那么他们之间有什么区别呢?2 Android中drawable或mipmap文件夹存放图片的区别2.1 结论先说结论:应用图标的图片资源存放在mipmap系列文件夹中,而其余图片存放在drawable系列文件夹中。2.2 Android官方对drawable和mip

2021-03-08 18:52:01 3355 1

原创 Git问题解决方案:不建议在没有为偏离分支指定合并策略时执行pull操作(Pulling without specifying how to reconcile divergent branches)

1 问题背景如果你也在使用2.27.0版本及以上的Git时,使用git pull命令出现以下的警告文案,可以查看本文章来解决此问题。博主最近在Android Studio上使用git pull命令时,每次Android Studio都会弹出下述的警告文案:warning: Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by runni

2021-02-25 22:34:32 55432 20

原创 2021年最新版Git一天入门教程

0 文章背景Git在其版本2.23后又引入了git switch和git rerstore,同时Git命令的使用在实际工作过程中不可缺少,因此博主本人自己花了一天时间从头复习并深入了Git的使用过程并撰写了这篇文章,也希望帮助到各位一天掌握Git。本文主要参考了廖雪峰的Git教程,简化了其中简单的Git命令,同时额外详细描述了git merge、git rebase等重点Git命令的使用方式以及原理。1 安装Git如果你正在使用Mac做开发,有两种安装Git的方法。一是安装homebrew,然后通

2021-02-25 16:29:16 687

原创 2021年完美解决Gradle下载慢的问题(Android Studio)

1 问题背景安卓开发过程中,经常会遇到Gradle Wrapper包下载缓慢导致项目无法编译影响开发效率问题,极端情况下下载速度只有10kb,下载一个特定版本的Gradle需要半个小时以上,严重影响开发效率。2 踩坑过程在百度和Google中查询如何解决Gradle下载慢的问题时,很多文章会推荐用阿里云仓库解决问题,例如这篇文章完美解决gradle依赖库导致build慢的问题,但是阿里云仓库中根本就没有任何Gradle安装包!3 解决方案3.1 手动下载Gradle当Android St

2021-01-07 19:54:43 5492 10

原创 Could not download ****.jar解决方法(2020年最新,Android Studio,导入项目)

1 问题背景最近博主想要学习并在Android Studio中导入JsonChao大神的Awesome-WanAndroid项目,该项目的简介如下:Awesome WanAndroid项目基于Material Design + MVP + Rxjava2 + Retrofit + Dagger2 + GreenDao + Glide这是一款会让您觉得很nice的技术学习APP,所用技术基本涵盖了当前Android开发中常用的主流技术框架,阅读内容主要面向想在Android开发领域成为专家的朋友们。此

2020-12-24 14:29:37 13650 4

原创 2022年Android Studio正确配置并构建运行Android老项目解决方案(Build, Run, Legacy)

1 问题背景博主最近要有一个学习任务:掌握OkHttp的使用方法:1.get、post请求 传递参数2.OkHttp进行get请求下载文件3.下载文件的同时 利用前期掌握的线程知识 显示下载进度因此博主想找一个基于OkHttp实现的多线程、断点续传Android下载工具项目,并参考其中的源码。接着有幸阅读到了这篇文章:Android 实现一个简单的文件下载工具,其具体详细介绍了如何从零创建一个多线程、断点续传的下载工具APP,同时提供了这个项目的GitHub网站:Github-SheHua

2020-12-24 12:20:48 3337 13

原创 Android Logcat不能正常打印日志或显示No debuggable processes(Android Studio没有可调试应用)问题解决方案(打印,Log,2021)

1 问题背景博主在使用多次Android Studio后,总会出现一个问题:不管在Android Studio中重新点击运行APP按钮多少次,Logcat中始终没法发现可调试的APP,而这会导致在开发APP时无法实时查看Logcat,从而定位APP开发过程中的问题,其中No debuggable processes的问题体现截图如下:2 解决方案博主通过Google查询到了多种解决方案,不过部分解决方案因为时效性的问题,比如2015年的解决方案是:Tools-> Android -> E

2020-12-22 13:46:28 6823 11

原创 Handler内存泄漏问题解决方案(Android,第一行代码,This Handler class should be static or leaks might occur)

1 问题背景博主最近在复习《第一行代码》的第10.2.2章节——在子线程中更新UI,书中给出的在UI主线程中用匿名内部类实现Handler的写法如下:private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_TEXT: //在这里

2020-12-04 14:31:33 573

原创 2021年最新Android开发工程师成长路线(架构师,职业规划,NDK,Flutter,Framework,UI,性能优化)

1 文章背景最近博主李同学在网上看到下面这张程序员职业生涯规划路线图,因此便想到作为一名Android开发工程师,其未来职业生涯应该如何规划呢?近几年,Android 开发的套路日趋成熟,越来越多的 Android 工程师获得了「高级」的称号,也有不少人在参与公司的 App 从无到有再到火爆的整个开发过程中,顺理成章地拿到了 Leader 职位。但对于自己的水平,多数人却并不满意,甚至有不少人觉得自己的水平被同事和老板「高估」了。市场真正需要的所谓「高级架构师」到底需要具备什么条件?在此和大家探讨一

2020-10-04 02:08:58 7464 30

原创 Java详解剑指offer面试题68--树中两个结点的最低公共祖先

Java详解剑指offer面试题68–树中两个结点的最低公共祖先输入一棵树的两个结点,返回它们的最低公共祖先。这道题说得很含糊,仅仅告诉了*一棵树,*那这棵树是二叉树吗?再具体点,它是二叉查找树吗?我们来一一讨论这这几种情况。如果这颗树是二叉查找树二叉查找树的特点是:任意父节点都大于其左子树的所有结点值,且都小于其右子树的所有结点值。两个结点的公共祖先一定是大于其中较小的那个且小于其中较大的那个,而从根结点开始从上到下遇到的第一个位于两个输入结点值之间的结点就是最低的公共祖先。于是我们可以这么

2020-09-28 17:42:22 226

原创 Java详解剑指offer面试题67--把字符串转换成整数

Java详解剑指offer面试题67–字符串转整数将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0我们知道Java内置了Integer.parseInt(String s),直接调用即可。如果要自己写呢,你可能很快想出如下代码public static int str2Int { // 核心代码 int number = 0; for (int i = 0; i < s.length(); i++) {

2020-09-28 13:54:29 203

原创 Java详解剑指offer面试题66--构建乘积数组

Java详解剑指offer面试题66–构建乘积数组给定一个数组A[0, 1,…n - 1],请构建一个数组A[0, 1,…n - 1],其中B中的元素B[i] = A[0]A[1]…*A[i - 1]A[i + 1]…*A[n - 1],不能使用除法。如果可以使用除法,直接除以A[i]就可以得到B[i],但是现在要求了不能使用除法,只好另辟蹊径了。一种方法是剔除A[i]进行连乘计算B[i],计算一次的时间是 O(n)O(n)O(n),需要计算n次所以总的时间复杂度为O(n2)O(n^2)O(n2)

2020-09-28 08:53:40 115

原创 Java详解剑指offer面试题65--不用加减乘除做加法

Java详解剑指offer面试题65–不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用"+"、"-"、“x”、"÷"四则运算符号。不能用四则运算,自然容易想到用位运算。但如何使用位运算作加法呢?先来分析十进制是如何作加法的。比如要18 + 6 1 8+ 0 6—————— 1 4+ 1 0—————— 2 41) 个位和个位相加,十位与十位相加,但不进位;2) 6 + 8产生一位进位得到10,1 + 0不产生进位;3) 不进位的和14 + 个位的进位1

2020-09-27 21:14:46 121

原创 Java详解剑指offer面试题64--求1+2+3+...+n

Java详解剑指offer面试题64–求1+2+3+…+n求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键词以及三元运算符等。这道题没有多大意义…方法1,递归不过该做还是得做。循环不能用,很自然想到用递归。package Chap6;public class Sum { public int Sum_Solution(int n) { if (n == 1) return 1; return

2020-09-27 00:13:27 200

原创 Java详解剑指offer面试题63--股票的最大利润

Java详解剑指offer面试题63–股票的最大利润假设某股票的价格按照时间先后顺序存储在数组中,问买卖该股票一次可能获得的最大利润是多少?如一支股票在某段时间内的价格为{9, 11, 8, 5, 7, 12, 16, 14}那么能在价格为5的时候购入并在价格为16时卖出,能获得最大利润11咋一看好像只要求出数组中的最大/最小值就完事了,但是数组中的值是按照时间顺序排列的,这就是说假如数组中最小值在最大值之后,它们的差值不会是股票的最大利润。因此我们要求的是数组中排在后面的数(售出价格)与排在前面

2020-09-26 21:06:47 285

原创 Java详解剑指offer面试题62--圆圈中最后剩下的数字

Java详解剑指offer面试题62–圆圈中最后剩下的数字0, 1, 2…,n - 1这n个数字排成一个圆圈,一开始从数字0开始,从这个圆圈里删除第m个数字;然后从被删除的数字后一位开始计数,继续删除第m个数字…重复这个过程,直到最后只剩一个数字为止。求出这个圆圈里剩下的最后一个数字。用环形链表模拟圆圈比较直观的思路就是模拟游戏的过程,题目中说到圆圈而且要经常删除元素,因此容易想到用环形链表,但是Java内置的数据结构中没有环形链表,那么只好当遍历到链表末尾时转到链表头部。举个简单的例子{0,

2020-09-26 16:05:06 130

原创 Java详解剑指offer面试题61--扑克牌中的顺子

Java详解剑指offer面试题61–扑克牌中的顺子从扑克牌中随机抽5张牌,判断是不是一个顺子,即这五张牌是不是连续的。2~10是数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。这道题有两种思路。方法1:用大小王填补间隔正常的顺子比如23456,假如含有大小王呢?03467也能构成顺子,虽然4和6中间有一个间隔,但是因为存在一张大小王,刚好可以让它成为5而填补上4和6之间的间隔。再假设是00367也能构成顺子,3和6之间有两个间隔但是刚好有两个王可以填补。更特殊的023

2020-09-26 10:21:08 393

原创 Java详解剑指offer面试题60--n个骰子的点数

Java详解剑指offer面试题60–n个骰子的点数把n个骰子扔在地上,所有骰子朝上的一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。递归n个骰子,我们可以投掷n次,累加每次掷出的点数即可。因此要求出n个骰子的点数和,可以从n个骰子先取出一个投掷,这一个骰子只可能出现1-6中的某一个数,我们需要计算的是1-6每个点数与剩下n -1个骰子的点数和;接下来进行第二次投掷,现在骰子堆中还有n - 1个骰子,对于这n -1个骰子,继续从中选一个出来投掷,并在上次掷出的点数上累加…这显然是个递

2020-09-25 13:45:55 215

原创 Java详解剑指offer面试题59--队列的最大值

Java详解剑指offer面试题59–队列的最大值滑动窗口的最大值题目1:滑动窗口的最大值。给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2, 3, 4, 2, 6, 2, 5}以及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}方法1:基于最大堆的优先队列就以题目中的例子来模拟找出窗口中的最大值的过程。先存入3个元素,于是优先队列中有{2, 3, 4},使用peek方法可以以O(1)的时间得到最大值,之后删除队列头的元

2020-09-25 08:37:51 114

原创 Java详解剑指offer面试题58--反转字符串

Java详解剑指offer面试题58–反转字符串题目1输入一个英文句子,翻转句子中单词的顺序,但单词内的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入"I am a student.“则输出"student. a am I”方法1:以空格为分隔符split我直观的解法,以空格为分隔符使用split,这就将字符串变成了单词数组。然后逆序遍历字单词数组,在除了最后一个单词外的其他每个单词后添加一个空格即可。这道题需要考虑字符串中的字符全是空格的特殊情况,这种情况下没有任何单词,所以直

2020-09-24 19:05:31 233

原创 Java详解剑指offer面试题57--和为s的数字

Java详解剑指offer面试题57–和为s的数字题目1输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S;如果有多对数字的和等于S,输出两个数的乘积最小的。先看这个条件:和一样,要求乘积最小。由于数组递增排序,那么这两个数与其他和为s的两个数比,相隔的距离更远。这里就不证明了,试想周长一样的两个图形,又扁又长的矩形和正方形比哪个面积大吧…要从数组中找两个数相加,如果和刚好为s,这样就找到了一组候选值;如果和小于s呢,可以把两个数中较小者丢弃,换一个比它稍大的继续求和与

2020-09-24 12:30:44 97

原创 Java详解剑指offer面试题56--数组中数字出现的次数

Java详解剑指offer面试题56–数组中数字出现的次数一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1).例如输入数组{2, 4, 3, 6, 3, 2, 5, 5},只有4和6这两个数字只出现了一次,其他数字都出现了两次,因此输出4和6。如果不考虑空间,用哈希表统计频率倒是很简单…好吧,没有思路。书中使用的是位运算。先考虑简单的情况,如果数组中只有一个数字出现了一次而其他数都出现了两次。那么堆数组中

2020-09-24 08:41:59 154

原创 Java详解剑指offer面试题55--二叉树的深度

Java详解剑指offer面试题55–二叉树的深度输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归版本很容易想到使用递归,根结点处的深度为1,既然要求树的最长路径,必然从根结点的左右子树中选出深度更大的那棵子树,也就是整棵树的深度为depth(root)=max[depth(root.left),depth(root.right)]+1depth(root) = max[depth(root.left), depth(

2020-09-23 20:12:51 108

原创 Java详解剑指offer面试题54--二叉搜索树中排名为k的结点

Java详解剑指offer面试题54–二叉搜索树中排名为k的结点给定一颗二叉搜索树,请找出排名第k的结点。注意是二叉搜索树,这说明对于任何结点,有父结点大于其左子结点且小于右子结点。如果中序遍历这棵树,就能得到递增排序的序列。接下来就很简单了,只需中序遍历到第k个结点,然后立即返回就行了。感觉对于这道题,非递归的中序遍历更好写一点。package Chap6;import java.util.LinkedList;public class KthNode { public Tre

2020-09-23 16:13:25 118

原创 Java详解剑指offer面试题53--数组中的逆序对

Java详解剑指offer面试题53–数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数.暴力法很直观,拿第一个数和之后的每个数比较,然后拿第二个数和之后的每个数比较…需要两个for循环可得到结果,时间复杂度为O(n2)O(n^2)O(n2)用数组的归并过程来分析这道题,归并排序就是自上而下地将数组分割成左右两半子数组,然后递归地将子数组不断分割下去,最后子数组的大小为1,对于大小为1的子数组没有排序和归并的必

2020-09-23 11:43:54 95

原创 Java详解剑指offer面试题52--两个链表的第一个公共结点

Java详解剑指offer面试题 52–两个链表的第一个公共结点输入两个单链表,找出它们的第一个公共结点。这道题有一个隐含条件:单链表只有一个next指针,如果两个链表有公共结点,那么从第一个公共结点前的一个结点开始,两个链表的next都指向同一个结点了。通俗点说就是两条路汇聚成了一条。两个链表,逆序比较比如一条链表{1, 5, 6, 7, 8}另外一条{2, 3, 4, 5, 6, 7, 8}从结点5开始后面的结点都完全一样了。既然后面的结点完全一样,我们可以从后往前比较两个链表当遇到某两个

2020-09-23 08:51:35 121

原创 Java详解剑指offer面试题51--在排序数组中查找数字

Java详解剑指offer面试题51–在排序数组中查找数字统计一个数字在排序数组中出现的次数。遍历这是很容易想到的方法了,但时间复杂度O(n),不推荐。package Chap6;public class NumOfK { /** * 方法一:遍历,O(n)复杂度,不推荐 */ public int getNumberOfK(int[] array, int k) { if (array == null) return 0;

2020-09-22 19:58:42 189

原创 Java详解剑指offer面试题50--第一个只出现一次的字符

Java详解剑指offer面试题50–第一个只出现一次的字符找出字符串中找出第一个只出现一次的字符,比如输入“abacceff",则输出'b'要想知道某个字符是不是只出现了一次,必须遍历字符串的每个字符。**因此可以先遍历一次,统计每个字符出现次数。再遍历一次,遇到某个字符出现字符为1就立即返回。**统计每个字符出现次数,可以用哈希表,不过如果输入中都是ASCII码,那么使用0-255表示即可。这样使用一个int[] count = new int[256]就能代替哈希表了,以count[some

2020-09-22 16:36:07 137

空空如也

空空如也

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

TA关注的人

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