自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

转载 二分法查找

(1)确定该区间的中点位置:mid=(low+high)/2    min代表区间中间的结点的位置,low代表区间最左结点位置,high代表区间最右结点位置(2)将待查a值与结点mid的关键字(下面用R[mid].key)比较,若相等,则查找成功,否则确定新的查找区间:如果R[mid].key>a,则由表的有序性可知,R[mid].key右侧的值都大于a,所以等于a的关键字如果存在,必然在R...

2018-06-29 17:13:34 277

转载 基数排序

(一)基数排序的思想:把待排序的整数按位分,分为个位,十位.....从小到大依次将位数进行排序。实际上分为两个                                           过程:分配和收集。                                        分配就是:从个位开始,按位数从小到大把数据排好,分别放进0--9这10个桶中;              ...

2018-06-29 16:02:00 532

转载 归并排序

其基本原理如下:对于给定的一组记录,利用递归与分治技术将数据序列划分成为越来越小的半子表,在对半子表排序,最后再用递归方法将排好序的半子表合并成为越来越大的有序序列。 经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。将待排序列中的所有记录扫...

2018-06-29 09:23:15 86

转载 大根堆排序

1、基本思想堆是一种特殊的树形数据结构,其每个节点都有一个值,通常提到的堆都是指一颗完全二叉树,根结点的值小于(或大于)两个子节点的值,同时,根节点的两个子树也分别是一个堆。  堆排序就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的...

2018-06-28 20:19:19 5121

转载 选择排序

具体流程如下:  1、首先从原数组中选择最小的1个数据,将其置于第一个位置。  2、然后从剩下的数据中再选择其中最小的一个数据,并将其置于原数组的第二个位置。  3、不断重复选择和交换的过程,直至最后排序完成。  假如有初始数据:25  11  45  26  12  78。  1、第一轮排序,从原数组中选择出最小的数据,并将其置于第一个位置。第一轮排序后,顺序为:[11, 25, 45, 26,...

2018-06-28 17:17:29 82

转载 快速排序

具体流程如下:  1、首先设定一个分界值,通过分界值将数组分成左右两部分,将大于等于分界值的数据交换集中到右侧数组,将小于分界值的数据交换集中到左侧数组;  2、然后,左侧数组和右侧数组可以独立排序。对于左侧数组可以取一个分界值,将左侧数组分成左右两个部分,同样将左边放置小于分界值的数据,右侧放置大于等于分界值的数据。对右侧数组做类似处理。  3、重复上述过程,其实就是递归。通过递归将...

2018-06-28 16:50:50 86

转载 冒泡排序

具体流程如下:  1、对要排序的数组中的数据,依次比较相邻的两个数据的大小。  2、如果前面的数据大于后面的数据,就把这两个数据进行交换。这样一轮比较和交换过后,就把最小的数据放在数组的最前面;  3、按照上述比较和交换的方法,把剩下的数据再进行相同操作,最后,便可按照从小到大的顺序对数组完成排序。  假如有初始数据:25  11  45  26  12  78。  1、第一轮排序,从数组的头部开...

2018-06-28 15:56:46 142

转载 希尔排序

具体流程如下:  1、将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对...  2、对每对数据进行比较和交换,排好顺序;  3、然后分成n/4个数组序列,再次排序;  4、不断重复以上过程,随着序列减少并直至为1,排序完成。      假如有初始数据:25  11  45  26  12  78。  1、第一轮排序,将该数组分成 6/2=3 个数组序列,第1个数据和...

2018-06-28 15:23:22 116

原创 直接插入排序

public void InserSort(int n){int i,j;RecordType<T> temp;for(i=1,i<n;n++){for(j=i;j>0&&elem.get(j-1).key.compareTo(elem.get(j).key)>0;j--){temp=elem.get(j-1);elem.set(j-1,elem.ge...

2018-06-28 10:27:47 132

转载 View inflate方法和LayoutInflater inflate方法的区别详解

我们在Android开发中,对于将布局填充成View对象,最常用的两种办法是:View类的方法inflate和LayoutInflater类的inflate方法,今天有朋友问到这两种填充方法的区别,就查看了一下两者的区别,写成文章,以方便有需要的人。 首先我们要清楚两者大致的区别,之后我们再来慢慢看两者具体的不同之处。 LayoutInflater类的inflate方法适用于所有需要进行布局填充的...

2018-06-19 09:33:30 172

转载 输入一个链表,反转链表后,输出链表的所有元素。

/* public class ListNode {     int val;     ListNode next = null;       ListNode(int val) {         this.val = val;     } }*/ public class Solution {     pu...

2018-06-11 17:01:31 429

原创 输入一个链表,输出该链表中倒数第k个结点。

/*public class ListNode {    int val;    ListNode next = null;     ListNode(int val) {        this.val = val;    }}*/第一种方法:public class Solution {    public ListNode FindKthToTai...

2018-06-11 16:00:43 90

原创 输入一个整数数组,实现一个函数来调整该数组中数字的顺序

方法一:public class Solution {    public void reOrderArray(int [] array) {        if(array.length==0)return;        if(array.length==1)return;        int []jishu=new int[array.length];        int []oushu...

2018-06-11 15:10:52 627

转载 Android 插件化和热修复知识梳理

1.概述研究热补丁技术目前国内的技术处于领先的地位,其他国家还没有对这方面进行研究。当然与Google市场在中国网络不通是有一定关系的。国内的应用市场有很多家,对app的管理上也没有google那边那么严格。热补丁和插件化技术在两三年的时间就从技术难点攻克到趋于成熟,大部分用户量大的APP都会考虑使用热补丁或者插件化技术。或者用于不发版修复线上问题,或者在线上发布增量功能,或者改进多部门协作,或者...

2018-06-10 20:32:20 719

转载 java 内部类和静态内部类的区别

内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一的差别是外部...

2018-06-10 16:16:52 151

原创 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

方法一:public class Solution {    public int NumberOf1(int n) {        int t=0;            char[]ch=Integer.toBinaryString(n).toCharArray();            for(int i=0;i<ch.length;i++){                if(...

2018-06-08 22:38:41 165

转载 Android 混淆那些坑

一、理论知识ProGuard 是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码 并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。二、基本使用ProGuard来进行混洗打包,大大的优化Apk包的大小。但是注意ProGu...

2018-06-08 09:56:34 805

原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+...+f(1)因为f(n-1)=f(n-2)+f(n-3)+...+f(1)所以f(n)=2*f(n-1)public class Solution {    public int JumpFloorII(i...

2018-06-07 21:08:54 203

原创 java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError

You can get your heap memory size through below programe.方法一public class GetHeapSize { public static void main(String[] args) { long heapsize = Runtime.getRuntime().totalMemory(); ...

2018-06-07 15:39:25 6061

转载 sdk开发时,对外暴露的接口封装

实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现eg.登陆接口1.定义接口LoginCallBack,两个函数 请求成功和失败public interface LoginCallBack{ public void OnSuccess(SDKUser user); //登陆成功的回调,我们的需求是给调用者一个封装好的SDKUser类,一些用户信息的get/set 略...

2018-06-07 11:13:21 5694

转载 Android开发者的混淆使用手册

毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的 And...

2018-06-07 09:48:30 105

原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

比较倾向于找规律的解法,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5,  可以总结出f(n) = f(n-1) + f(n-2)的规律,但是为什么会出现这样的规律呢?假设现在6个台阶,我们可以从第5跳一步到6,这样的话有多少种方案跳到5就有多少种方案跳到6,另外我们也可以从4跳两步跳到6,跳到4有多少种方案的话,就有多少种方案跳到6,其他的不能从3跳到6什么的啦,所...

2018-06-06 22:25:26 3777 1

原创 打包aar 时 如何不混淆某个类及里边的某个方法呢

package com.demo.download下有个 DownloadManager 类public static DownloadManager getInstance() 方法public void startDownload(Url url, String path, Callback);假设就以上两个方法是对外公开的,这两个方法名及类名我不想混淆,其他的方法名称及变量名称想都混淆了...

2018-06-06 20:52:12 3670

原创 斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39这个题可以说是迭代(Iteration) VS 递归(Recursion),f(n) = f(n-1) + f(n-2),第一眼看就是递归啊,简直完美的递归环境,递归肯定很爽,这样想着关键代码两三行就搞定了,注意这题的n是从0开始的:方法一:递归12345678910if(n<=1){    ret...

2018-06-05 23:46:03 9309 1

转载 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题

SurfaceView遮挡其他控件的项目背景:最近在做播放器项目,由于底层实现是用Surface和OpenGL切换渲染,所以在布局里面同时使用了GLSurfaceView和SurfaceView,同时播放控制按钮是自定义的,也没有使用Android自己提供的MediaCtroller控件。在这种背景下,问题出现了,如果有相关开发基础的同学应该知道,当SurfaceView和GLSurfaceVie...

2018-06-04 17:44:50 2374

原创 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。1:123456789   public int minNumberInRotateArray(int[] array) {        if (array.length == 0)            return 0;        for (...

2018-06-03 22:22:44 3773 1

原创 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。

Arrays.copyOfRange(T[ ] original,int from,int to)将一个原始的数组original,从小标from开始复制,复制到小标to,生成一个新的数组。注意这里包括下标from,不包括下标to。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉...

2018-06-01 23:15:06 723

转载 判断double值是否是一个非数字值以及Double.parseDouble()与Double.valueOf()

isNaN方法判断如果double值是一个非数字(NaN)值,则返回true;否则返回false。语法  public boolean isNaN() 返回值:如果double值是一个非数字(NaN)值,则返回true;否则返回false。示例  本示例创建Double对象d1,并通过Double类的isNaN 方法判断对象d1的参数值是否是数字,然后将结果赋给boolean型变量。Double ...

2018-06-01 20:45:39 3304

转载 Android PicturePlayerView 基于TextureView的图片播放器

一开始做这个控件的时候我用的是SurfaceView,但是我发现我无法将它放到中间的某一层,因为它拥有独立的绘图表面,所以最终选用了TextureView,需要注意的是TextureView必须在硬件加速开启的窗口中。如果你对它不熟悉的话可以参考《Android TextureView简易教程》。首先看一些关键的方法setOpaque(boolean):该方法用于设置TextureView是否不透...

2018-06-01 15:36:34 2414

空空如也

空空如也

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

TA关注的人

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