自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有图有真相

一言不合就上源码

  • 博客(24)
  • 资源 (16)
  • 收藏
  • 关注

原创 java进阶--Java中comparator及comparable完全解析

在讲解comparator之前,先举一个例子说明comparator的用法。假设武器库里有许多的枪,这些枪有两个重要指标一个是长度(len),另一个是威力(pow),现在对这些枪有个评价标准是:在威力相同的情况下长度越短越好,威力不同的情况下威力越大越好,对这些枪进行排序。

2017-04-30 16:58:47 1159 7

原创 经典算法--最大存水量问题

题目:给出一个数组代表围柱的高度,求能围柱的最大的水量,例如数组{ 5,2,3,2,4 },最大水量为5。如下图:黄色部分为围柱,绿色部分是能够围住的水,图中围柱的高度依次为 5,2,3,2,4最多能围住的水量是5。 思路:求出每个柱子上面

2017-04-29 20:09:17 9858 5

原创 笔试面试算法经典--最长括号匹配

在求最长括号匹配之前先看看括号下面这个问题:括号匹配“ {()}”这种是括号匹配,而 “{ ] ] { ” 这种就不是括号匹配。判断一个给定的括号字符串是否是匹配的。对于括号匹配这类的问题可以使用 Stack来处理:1 . 当碰到”( [ { “这些左括号就进栈。2 . 如果碰到“) ] }”这些右括号时,如果栈为空,则肯定不匹配,返回false。如果栈不为空,则出栈比较两个括号是否匹配不匹配

2017-04-27 22:40:12 5964 2

原创 笔试面试算法经典--最长回文子串

回文的定义正读和反读都相同的字符序列为“回文”,如“abba”、“abccba”是“回文”,“abcde”和“ababab”则不是“回文”。字符串的最长回文子串,是指一个字符串中包含的最长的回文子串。例如“1212134”的最长回文子串是“12121”。下面给出了三种求最长子串的方法。解法1(中心扩展法)时间复杂度O(n^2),空间复杂度为O(1)。中心扩展法的思路是,遍历到数组的某一个元素时,以这

2017-04-25 20:49:18 44728 10

原创 Java进阶--深入解析hashmap

HashMap原理先以一个简单的例子来理解hashmap的原理。在Java中先随机产生一个大小为20的数组如下:hash表的大小为7,将上面数组的元素,按mod 7分类如下图:将这些点插入到hashmap中(简单hashmap)后如下图:由上图可知: ① hashmap是用链地址法进行处理,多个key 对应于表中的一个索引位置的时候进行链地址处理,hashmap其实就是一个数组+链表的形式。②

2017-04-22 22:20:58 7057 8

原创 Java进阶--从源码理解Math.ceil()、Math.floor()、Math.round()

Math.ceil()首先看看Math.ceil()定义:Math.ceil()是常见编程语言中的常用代码,ceil() 方法执行的是向上取整计算,它返回的是大于或等于函数参数,并且与之最接近的整数。下面特殊情况:1.如果当前参数就是整数,直接返回。2.如果当前参数不是数值型、无穷大,或者是正0和负0,直接返回当前参数。3.如果当前参数小于0但是大于-1.0,则返回-0. 例如: Math.ce

2017-04-20 17:28:25 7410

原创 笔试面试算法经典--最长连续序列

【题目】找出无序数组中的最长连续序列的长度:例如数组[ 1 , 23 , 2 , 300 , 3 , 9 ,4 , 5 , 90 ],最长连续序列为:1,2,3,4,5,因此返回长度为 5。解法 1(时间复杂度O( nlogn)空间复杂度O(1))思路:先对数组进行排序,然后从前向后遍历排序后的数组并且记录最长连续子数组长度。public int longestcontinueArrays(in

2017-04-19 19:00:17 16548 3

原创 java进阶--深入理解Java自动装箱拆箱机制(Autoboxing and unboxing)

1.自动装箱与拆箱的定义装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。Java中的数据类型分为两类:一类是基本数据类型,另一类是引用数据类型。如下图:由上可知Java中的基本数据类型有八种分别是:int(4字节) byte(1字节) short(2字节) long(8字节) float (4字节) double(8字节) char(2字节) b

2017-04-18 20:37:40 8725 6

原创 笔试面试算法经典-打印n个数组中最大的topk

【题目】 有n个长度不一的数组,所有的数组都是有序的,请从大到小一次打印出这n个数组整体最大的 k 个数,如果 k大于n个数组中元素则将数组的元素全部打印。输入n行长度不等的二维数组可以表示n个长度不同的一维数组。例如:输入matrix={{1 , 2, 3 }, {4 , 5 }, {6 ,7 ,8 ,9 }, { 10 }}; k=4,输出:10,9,8,7。思路:建立一个大小为n的大根堆,

2017-04-16 17:15:40 3709

原创 笔试面试算法经典--数组partition调整使数组的左部分单调有序

【题目】 给定一个有序数组arr,调整使得数组的左部分无重复元素且有序,右边部分不要求。如数组arr[]={1,2,2,2,3,3,4,5,6,9,9} ;调整过后可以为:[1, 2, 3, 4, 5, 6, 9, 2, 3, 2, 9] 。思路:使用标记 u 其中arr[0…u] 表示已经处理过的没有重复元素且有序的区间,从arr[u+1…i-1]表示有重复元素的部分。则算法主要分为下面两部分。

2017-04-14 16:06:42 984

原创 笔试面试算法经典-未排序正整数数组中累加和为给定值的子数组

【题目】 给定一个数组 arr,该数组无序,但每个数均为正数,再给定一个正数 k 。求 arr 的所有子数组中所有元素相加为k的最长子数组长度。例如,arr=[1,2,1,1,1],k=3。累加和为3的子数组为[1,2] ,[2,3], [1,1,1]。解法1(时间复杂度O(N)空间复杂度O(1))思路:left,right来指向数组中的某一个区间,sum用来保存left和right区间中的值,由

2017-04-13 23:15:29 1383

原创 笔试面试算法经典--打印数组中相加和为给定值的二元组及三元组(Java)

【题目】给定一个递增的数组,要求打印数组中和为给定值的二元组,例如: arr[]={-8, -4, -1, 0, 1, 3, 4, 5, 6, 7, 9} , k=10,打印结果为:  1——9  3——7  4——61.打印二元组解法1(时间复杂度 O(N * N)空间复杂度 O(1)) 思路:利用双重循环遍历数组中的所有二元组,如果二元组相加的值为 k 打印。public static

2017-04-13 21:52:38 1785

原创 笔试面试算法经典--二叉树层次打印

【题目描述】 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如下面的树输出为: 12 5 18 2 9 15 19 17 16解法: 用队列来保存每层的节点,使用层次遍历,记录每层节点的个数,每层节点的个数其实是当前队列中没有加入任何子节点是队列的大小,然后将一行全部输出的同时将其子节点加入到队列。如上面图中,先

2017-04-12 22:49:11 2221

原创 笔试面试算法经典--动态规划-最大子矩阵和(Java)

【题目】 给定一个矩阵 matrix,其中矩阵中的元素可以包含正数、负数、和0,返回子矩阵的最大累加和。例如,矩阵 matrix 为: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 拥有最大和的子矩阵为: 9 2 -4 1 -1 8 其和为15。

2017-04-12 17:36:20 7750 2

原创 笔试面试算法经典--连续子数组的最大乘积及连续子数组的最大和(Java)

1. 子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如数组:arr[]={1, 2, 3, -2, 4, -3 } 最大子数组为 {1, 2, 3, -2, 4} 和为8。解法1(时间复杂度O(N * N)空间复杂度O(1)) 求出所有的子数组的和,比较选择出最大值。利用双重循环就可以遍历到所

2017-04-12 16:31:33 5569

原创 笔试面试算法经典--二叉搜索树转有序的双向链表(Java)

题目: 输入一棵二叉搜索树,将该二叉搜索树转换为一个排序的双向链表。要求:不能创建任何新的结点,只能调整树中结点指针的指向。如下图:解法1(非递归): 思想:二叉搜索树的中序遍历是一个有序的数组,在中序遍历的时候,用 Pre 指针保存前一个节点,当访问到当前节点的时候,将 Pre 节点右指针,指向当前节点,当前节点的左指针指向 Pre。 这样中序遍历完二叉搜索树,就产生了一个双向链表。publi

2017-04-11 23:07:25 3102

原创 笔试面试算法经典--判断二叉树是否是平衡二叉树(Java)

平衡二叉树(Balanced Binary Tree)又被称为AVL树,且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。如下面的三棵树:只有中间才是平衡二叉树。解法: 思路1:从根节点开始,求出根的左右子树的高度,如果根的左右子树的高度差大于1,返回FALSE,否则递归的判断根的左子树和右子树是否满足条件。class TreeNode{

2017-04-11 22:40:54 4020 2

原创 笔试面试算法经典--二叉树的子结构(Java)

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构(空树不是任意一个树的子结构)。下图中:右边的二叉树是左边二叉树的子结构解法: 先序遍历 A树,如果当前节点与 B树的根节点相同,则判断 B 是不是 A的子树,判断 B是 A 的子树的也用递归:比较 B 的左子树 是否是 A 左子树的子结构,B 的右子树是否是 A的右子树的子结构。因此需要两个函数来进行,一个函数来进行先序遍历,一个来判断是否

2017-04-11 14:34:03 1827

原创 笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)

给出一棵二叉树,求它的镜像,如下图:右边是二叉树是左边二叉树的镜像。解法1(递归)思路1:如果当前节点为空,返回,否则交换该节点的左右节点,递归的对其左右节点进行交换处理。public static void mirrorTree(TreeNode root) { if(root==null) return; //交换该节点指向的左右节

2017-04-10 19:04:41 7968 3

原创 笔试面试算法经典-找到数组中出现次数大于N/k的数(Java)

【题目】 给定一个整型数组arr,再给定一个整数k,打印所有出现次数大于 N/K 的数。如果没有这样的数,打印提示信息。 【要求】 时间复杂度为O(N*K),额外空间复杂度为O(K)。【思路】 每次从数组中删除 K 个不同的数,如果某个数的次数大于 N/K ,这个数最后肯定会剩下来,数学证明:假设 X 的次数为 (N/k+1) > N/K ,如果每次删除 k个不同的数最后数组里面剩余的

2017-04-08 22:46:07 6345 4

原创 笔试面试算法经典--矩阵的最短路径和(Java)

题目 给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有路径中最小的路径和。 例子: 给定m如下: 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 路径1,3,1,0,6,1,0是所有路径中路径和最小的,所以返回12。解法1思路:使用动态规划,定义 dp[M][N] , M ,

2017-04-07 17:11:17 16960

原创 笔试面试算法经典--最长公共子串(Longest Common SubString)

最长公共子串(Longest Common Substring): 是指两个字符串中最长连续相同的子串长度。例如:str1=“1AB2345CD”,str2=”12345EF”,则str1,str2的最长公共子串为2345。解法1如果 str1 的长度为 N,str2 的长度为 M,生成大小为 N*M 的 数组 dp , dp[i][j]表示 str1[0…i] 与 str2[0…j] 的最长公

2017-04-06 20:53:09 43163 8

转载 Android组件安全详解

2016-09-03 简析Android组件安全 Mobile android 前言前段时间在学习github上DroidPlgin插件的时候接触到不少专业术语,诸如预先占坑、Activit

2017-04-05 10:37:19 4280

原创 笔试面试算法经典--全排列算法-递归&字典序实现(Java)

全排列算法-递归&字典序实现全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 例如: 1 、2 、3三个元素的全排列为:{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}。解法1(递归) 如下图:要对1、2、3、4进行排序,第一个位置上的元素有四

2017-04-01 09:48:42 39845 15

简单炫酷进度球

Android实现进度球,可以根据业务逻辑来实现自己的进度显示

2018-12-26

off格式三维模型

本文件包含了 兔子 马 猫 龙 圆形 等各种形状的off格式模型

2018-04-02

mysql-connector-java-5.0.8-bin.jar

mysql-connector-java-5.0.8-bin.jar

2017-08-18

OpenGL ES 2 for Android.pdf

OpenGL ES 2 for Android.pdf高清

2017-08-05

TCP-IP详解卷1.2.3全集

TCP-IP详解卷1.2.3全集

2017-06-16

thinking in Java

thinking in Java高清

2017-06-13

spring-framework-3.2.9.RELEASE

spring-framework

2017-05-16

LeetCode高清版本

LeetCode题目答案高清

2017-05-09

经典算法flash动画演示

将各种排序、搜速算法以及各种数据结构的相关算法,(例如:二叉树的建立、构造哈夫曼树的算法模拟、邻接表表示的图的广度优先搜索等)以flash动画的形式表现,原本很复杂抽象的算法知识(例如图的遍历/搜索)变得极其通俗易懂。

2017-04-15

深入理解Java虚拟机(高清第二版)JVM高级特性与最佳实践

深入理解Java虚拟机(高清第二版)JVM高级特性与最佳实践

2017-04-08

Android更新

Android自动更新代码

2017-03-10

StrategyDemo

策略模式实例代码

2016-11-02

mvpLoginTest

这是MVP模式的一个实例

2016-10-30

ILoginTest

ILoginTest

2016-10-28

空空如也

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

TA关注的人

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