自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天马行空

心态不能崩

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

原创 Android绘制中requestLayout,invalidate和postInvalidate的异同

(图片来源忘记了)简单的区别为:1、invalidate和postInvalidate都会使view重绘(即调用onDraw方法),不同的是,invalidate是在UI线程自身中使用,而postInvalidate在非UI线程中使用。2、当view确定自身已经不再适合现有的区域时,该view本身调用onLayout来要求父类的视图重新调用三大流程来重新设置自己位置。例如动态移动一个View的位置,

2017-09-01 14:53:48 512

原创 算法复习:数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数解题思路(1)遍历一次求出个数 (2)使用二分查找求出第一个和最后一个的下标。如何求第一个数字呢,假如要找的数字和中间的数字相等,则判断其前面一个数字(下标不越界),假如不相等则是第一个数字。同理可求最后一个数字。需要注意的是数组下标越界问题。代码:public static int GetNumberOfK(int[] array, int k) {

2017-09-01 14:31:14 376

原创 算法复习:两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。解题思路(1)方法一:遍历链1,每遍历一个结点再遍历链2,看是否是相同结点。这种方法效率较低。(2)方法二:将链表1和链表2插入到栈中,然后从栈顶开始取,上面的结点都是一样的。这种方法需要两个辅助空间。(3)方法三:先算出各自长度,让长度长的链先去掉多余的,然后同时向链尾方向取,取到相同的即是公共结点。不需辅助空间,同时效率较高。代码:public c

2017-08-30 10:11:35 374

原创 算法复习:丑数

题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路(1)常规方法:从1开始判断是否丑数。通过3个while循环将数除以2,3,5,初到除不尽为止,判断结果是否为1。然后累计丑数的个数即可。(2)方法一的效率不高,即使不是丑数也需要进行计算。因此,我们可以不对

2017-08-29 13:42:40 792

原创 算法复习:第一个只出现一次的字符

题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置解题思路使用哈希表,将每个字符与对应出现的次数存到表中,然后再遍历一边哈希表,查找第一个出现一次的字符,即可找到位置。要点在于使用额外的辅助空间换取时间效率。代码public static int FirstNotRepeatingChar(String str) { Map<C

2017-08-28 20:50:07 396

原创 算法复习:二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路举个栗子,就可以发现特点首先看看这个图对应的后序遍历序列的数组,{5,7,6,9,11,10,8},由于二叉搜索树的特点:左子树节点的值要比根节点小,右子树节点的值要比根节点大。所以对应的可以将数组分成三段{5,7,6},{9,11,10},{8}

2017-08-07 15:45:29 228

原创 算法复习:连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少

2017-08-06 20:27:50 207

原创 算法复习:旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路最简单的方式是遍历一遍,时间复杂度为log(n)。由于数组原本是排好序的,所以可以可以使用二分查找。若最小的

2017-07-31 14:38:10 210

原创 算法复习:对称的二叉树

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的解题思路前序中序后序遍历左子树都是要在右子树之前遍历,而我们只需要判断其中一种遍历和它对称的遍历结果是否一样即可。简单而言就是在遍历的时候同时遍历另外一边。代码boolean isSymmetrical(TreeNode pRoot) { return isSymmetrica

2017-07-28 22:41:11 255

原创 Android进程通讯的几种方式

1、Bundle由于Activity,Service,Receiver都是可以通过Intent来携带Bundle传输数据的,所以我们可以在一个进程中通过Intent将携带数据的Bundle发送到另一个进程的组件。缺点:无法传输Bundle不支持的数据类型(也可将数据传递到另一个进程处理)2、文件两个进程可以到同一个文件去交换数据,我们不仅可以保存文本文件,还可以将对象持久化到文件,从另一个文件恢复。

2017-07-22 20:01:45 1441

原创 算法复习:二叉树中和为某一值的路径

题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路总体的思路是遍历二叉树,但是需要保存根节点到该节点路径的值,由于到达叶子节点后需要回退,所以使用栈的数据结构存储比较适合,直接将栈顶弹出即可。代码private ArrayList<ArrayList<Integer>> list = new A

2017-07-21 13:33:37 242

原创 算法复习:从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:树的层序遍历,关键是使用一个队列保存下一层要遍历的数字,此处使用的是Java的LinkedList。首先将根加入队列,在打印根之后把左右节点放入队列,继续打印左节点时把左节点的左右节点放入队列,一直循环即可。代码:public ArrayList<Integer> PrintFromTopToBottom(TreeNode ro

2017-07-19 22:33:08 227

原创 算法复习:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:首先看弹出栈的第一个数字是4,所以栈里面必须有1,2,3,4了,因为题目已经告知是按照

2017-07-18 15:56:11 235

原创 Java循环内不断生成对象内存变化情况

情景:以下程序会不会有内存泄露,并分析它的内存大小走向public static void newManyInteger(){ for(int i = 0;i < 1000*1000*1000;i++){ Integer in = new Integer(i); }}参考网上资料,一个Integer占12byte,总共约12G,很明显虚拟机内存没有这么大,每个In

2017-07-18 12:04:00 3669

原创 使用高德地图API无法定位

问题情境:第一次导入项目,运行后发现无法定位。原因:申请API时使用的SHA1值与本机的SHA1值不同因为Android系统要求所有程序都需要经过数字签名才可以安装,假如没有可用的数字签名则不可以安装运行此程序。为了方便程序员调试,IDE会默认为app提供一个debug,keystore签名文件,正是因为默认提供了测试的签名文件,所以程序员在IDE的开发环境改变(例如换了电脑)后,没有注意到本地的S

2017-07-15 15:59:27 8690

原创 AndroidStudio第一次从gitlab克隆项目

第一步Git官网下载Git并安装,安装完成,File->Setting->Version Control->Git->Path to git executable:选择安装路径下的git.exe,test一下,出现如下图即可。第二步(不可忽略)在gitlab账户中添加ssh密匙(类似让gitlab信任你的电脑),否则会出现Could not read from remote repository.的

2017-07-14 23:19:01 4316

原创 算法复习:斐波那契数列

递归实现:public static int fibonacci(int n){ if(n <= 2){ return 1; }else{ return fibonacci(n-1) + fibonacci(n-2); } } 时间复杂度:O(2^(N/2))<=T(N)<=O(2^N)特点:效率很低,例如我们要求f

2017-07-14 22:53:42 321

原创 算法复习:树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路分成两步,第一步先从树1中找到树2的根节点,找到后就开始判断子树是否相同,否则从树1继续向下找,显然可以使用递归实现。第二步是找到根节点后判断树是否相同,也可以使用递归,递归的出口是到树2的叶子节点,即上面的节点都已经相同。题目考察的点是算法的健壮性,需要考虑只有一个节点或者都是空等情况代码:p

2017-07-12 22:10:43 178

原创 算法复习:二叉树的镜像

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路前序遍历中的第一个数字是书的根结点,再重中序遍历中找到根节点,其左边为根的左子树的中序遍历,其右边为根的右子树的中序遍历。由于前序遍历中,紧跟在根节点

2017-07-11 17:25:34 247

原创 算法复习:数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路看到这个题目想到的最简单的思路是:使用HashMap将数字和次数存起来,再遍历一遍判断是否是两次即可,但是这种思路显然不是出题者想要的解法。所以可以从“2次”思考,两个数的什么操作可以识别出是否相同?对了。异或!任何一个数字异或它自己都等于0!但是问题又来了,数组里

2017-07-10 21:39:31 195

原创 Android单例模式

参考博客:http://www.2cto.com/kf/201310/249105.html1、懒汉模式:每一次调用都要对方法进行加锁,要维护锁会导致性能损耗,其实不需要每次进入方法都加锁,只需要第一次进入的时候防止多个线程产生多个单例即可。所以只需要在new Singleton处加锁即可,由此引出第二种模式,双重锁定模式。/2、双重锁定模式:第一次生成完实例以后就直接返回实例,不需要

2017-07-10 10:51:41 223

原创 算法复习:二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5

2017-07-09 22:15:28 218

原创 AndroidManifest中Application和activity的label的优先顺序

可以简单的理解为Activity中的Label的优先级高。1、当Application和Activity都设置了Label,那么应用的名称就是主Activity中Label的名称。注意,是主Activity,即应用开始的那个Acticity。2、当Acitivity没有设置label,actionbar上的title就是显示Application的Label

2016-08-20 21:29:31 2655

原创 displayOptions 属性

displayOptions 属性源码中有如下的成员:"displayOptions"> "none" value="0" /> "useLogo" value="0x1" /> "showHome" value="0x2" /> "homeAsUp" value="0x4" />

2016-08-20 20:38:13 1287

原创 学习总结:Activity生命周期

刚开始学习Android时看了一些入门的书籍,大多的书籍前面的章节都会介绍Activity的生命周期,刚开始学时感觉好像没什么用,因为好像只重写onCreate方法就好啊。其实还是to young了,因为不懂生命周期的话就不知道什么时候会执行哪些方法,所以认真学习一遍还是很重要的。首先需要了解一下各个方法有什么用处:(1)onCreate:这是生命周期的第一个方法,我们一般是在这个

2016-05-19 19:40:41 351

空空如也

空空如也

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

TA关注的人

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