自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

panyyer

认真地生活

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

原创 判断平衡二叉树(JAVA)

解法一:递归次数少,代码量不多public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return getDepth(root) != -1; } public int getDepth(TreeNode node){ if(node == null)

2017-08-01 11:00:06 795

原创 求 TOPK 的三种方法及分析

从八大排序来说,适合求 topk 的排序有:冒泡、堆排、快排(有部分人觉得用快排左比较好,但是我不这么认为,利用快排思想求第K大是最好的,但是不太适合求前K大)冒泡(n*k):对于冒泡来说,求前k个数,只需要遍历k次即可,因此算法上有性能的提升堆排(nlogk):构造一个大小为 k 的堆,求前 k 大就构造最小堆(构造完之后,最小值如果小于当前值,则覆盖然后再调整一次堆),最前 k 小就构造最大堆(

2017-07-29 23:11:19 4557

原创 取模和取余的区别

两者的区别只有一个:取余运算在计算商值向0方向舍弃小数位取模运算在计算商值向负无穷方向舍弃小数位同时,也可以这样理解:取余,遵循尽可能让余数的绝对值小的原则取模,遵循尽可能让商小的原则从上面的区别可以总结出,取余(rem)和取模(mod)在被除数、除数同号时,结果是等同的,异号时会有区别。下面来看一些例子取模5 mod 3 = 2 -5 mod 3 = 15 mod -3 = -1

2017-06-26 19:28:54 58873 8

原创 Mysql 各种索引的介绍

Mysql索引类型分为主键索引、唯一索引、普通索引、全文索引、组合索引。(1)普通索引(Index):最基本的索引,它没有任何限制。(2)唯一索引(Unique Index):它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。(3)主键索引(Primary Index):它是一种特殊的唯一索引,不允许有空

2017-04-10 11:22:35 1755

原创 Mysql InnoDB 比 MyISAM 更节省空间 ?

存储引擎 InnoDB 存储相同的数据需要的空间比 MyISAM 大,这是大家都知道的,因为MyISAM对数据进行了压缩。但是今天我看到了一个奇怪的现象,相同的表,相同的数据,InnoDB占用的存储空间比MyISAM竟然要小。创建一个表CREATE TABLE `zf1` (`id` int(11) NOT NULL,`c` char(120) NOT NULL

2017-04-10 11:15:22 1750

原创 JAVA HashMap判断冲突及其解决冲突策略

首先,HashMap是通过调用Key对象的hashCode()方法来确定存储位置的。如果两个Key对象调用hashCode()方法返回的值相等,就会调用Key对象的equals()方法。如果equals方法返回true,那么HashMap就会认为这两个Key对象是相同的,后一个Key的Value对象对覆盖前一个Value对象。如果equals()方法返回false,代表两个不同的Key对象要存在同一

2017-04-08 23:30:54 1208

原创 B-Tree作为索引能够提高查询效率的原理

要说明这个原理,首先要知道局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期间所需要的数据通常比较集中。有了局部性原理,操作系统磁盘的访问方式就改变了,访问数据的时候不是一个字节一个字节地读出来,而是一次读出一个页(一般为4k或8k)的数据,这些数据是物理相邻的,这就是由局部性原理引申出的磁盘预读。B-Tree作为索引(mysql在实现上实际是B+-

2017-04-08 23:26:20 2723

原创 Mysql索引注意事项

这里主要讨论的问题是Mysql索引在什么情况下会失效。要讨论这个问题的前提是:确定索引的组织结构,不同结构的索引,失效方式,支持方式是不一样的。此外,索引是通过牺牲存储空间和增删效率来提高查询效率的。1、索引不会包含有NULL值的列只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NUL

2017-04-08 23:25:18 392

原创 冒泡排序【改进】

冒泡排序是最简单的排序算法之一,在这里首先要说明的是一个要注意的地方。冒泡排序在最好情况下时间复杂度可以是o(n^2),也可以是o(n)。下面看一种大家看得最多的写法public void bubbleSort(int arr[]) { for(int i = 0, len = arr.length; i < len - 1; i++) { for(int j = 0; j

2017-04-08 23:21:17 228

原创 MyISAM和InnoDB的区别

Mysql最常用的存储引擎就是MyISAM和InnoDB了,首先说一下Mysql支持的索引结构有BTree 索引, Hash 索引, FULLTEXT索引和 RTree 索引,而Mysql的索引类型有主键索引、唯一索引、普通索引、全文索引、组合索引,索引结构和索引类型是有区别的。(一)两者主要区别:1,使用的索引:MyISAM和InnoDB的索引都是使用B+树组织的,其次MyISA

2017-03-29 18:37:43 263

转载 高效素数打表

#include #include #include #include #define maxn 10000000 bool visit[maxn+1000000]; int prime[maxn],n; ///prime的大小大概估计一下再开数组。大概是(x/lnx) void getprime() { memset

2017-03-28 22:07:16 204

原创 Servlet的init()方法在什么时候执行

今天稍微学习了一下 Servlet,Servlet 主要有以下几个方法: 1) destroy() 2) getServletConfig() 3) getServletInfo() 4) init(ServletConfig arg0) 5) service(ServletRequest arg0, ServletResponse arg1)destroy 和 service 方法的调用

2017-02-15 00:33:55 24867 3

原创 初学者的Git浅谈

花了两天时间粗略看了一下git,虽然并没有学得深入,但是想在此以一个初学者的角度对这两天git的学习进行总结。之前一直在用svn,但是想到github这样的社区仅仅支持git,就想来感受一下git的魅力。一、git相对于svn的优势svn必须连网才能将代码提交到仓库,git每一台电脑都有一个本地仓库,无需连网,随时提交,需要的时候再将本地的修改推送到给远程仓库(实际上很多时候git也是有中央代码仓

2017-02-03 20:14:35 251

原创 【字符串系列】字符串匹配(KMP)

KMP算法是一种字符串匹配算法,由三个老外发现的,因此算法就用三个老外名字首字母命名了。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。KMP算法的关键是next数组的求解,并根据实际情况next数组可以进行各种活用。next数组是什么?例如有一个字符串n,和一个字符串m,需要在n中匹配m,那么就需要对m进行next数组求解,

2016-10-27 15:52:14 319

原创 hdu5073 -- 贪心(2014西安现场赛)

大意:给出n个在一条直线上的点,允许移动其中的k个点,求移动k个点后,其余所有点到重心的距离的平方和最小。思路:首先,5w个点,暴力解会超时。可以看出,k个点肯定是移动到最后 的重心处,所以这k个点就不用再考虑了。关于重心,因为所有点的质量都是1,因此将所有点的平均值就是重心。接下来就是解这一题的关键了,留下哪些点才能使公式 I 的值最小,试想一下,如果将n个点排序,那么,取连续的n-

2016-10-25 16:21:29 274

原创 hiho1385 -- 模拟题(2016北京网络赛)

题目链接:http://hihocoder.com/problemset/problem/1385题目大意:给出一串字符,两个单词组成一个短语,求出现次数最多的短语以次数,被逗号和换行分割的两个单词不能组成短语。思路:我用了strtok函数来分割单词,用法可以百度。大体思路就是将一个用例的每一行字符串存起来,对于每一行字符串先通过逗号分隔成好几个子串,每个子串再分别以空格分

2016-10-14 12:55:47 289

原创 hdu1272 并查集

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272这道题考察的是并查集的应用之一,判断无向连通图是否存在环对并查集不熟悉的话,这里有模板:http://blog.csdn.net/qq_22497299/article/details/52602094简化题目的意思:1,保证图是连通的,且连通分量为1( 即

2016-10-14 12:54:22 301

原创 hdu1231 并查集模板题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213模板题,没什么好说的。.这里整合了并查集的模板,也有一些并查集的说明:http://blog.csdn.net/qq_22497299/article/details/526020940ms代码:#include#include#include

2016-10-14 12:51:47 302

原创 JAVA的构造器和构造方法

构造器和构造方法有什么区别?为什么会有两种叫法?在看《JAVA疯狂讲义》的时候发现整本书频繁出现“构造器”这一词。而之前学C++和另外一本《JAVA2 实用教程》叫的都是构造方法,因此我便很不习惯构造器这一叫法。百度了一下,结果却和我想得大相庭径。以下引用百度知道上面一位朋友比较靠谱的回答 在Java里并没有构造方法这一名词 这一名词是在C++以往的外文书籍中直译过来的 而且构造器这词

2016-10-14 12:50:40 832

原创 C语言求最小公倍数

首先,需要知道一个公式,最小公倍数=两整数的乘积/最大公约数。 最大公约数通过辗转相除求得,具体求法可以看我的博客,利用位操作,实际上一行代码即可求出最大公约数。 http://blog.csdn.net/qq_22497299/article/details/51922527 知道如何求最大公约数之后,只要知道公式,求最小公倍数就不在话下了。int lcm(int a, int b){

2016-10-14 12:49:39 2704

原创 eclipse常用快捷键

Ctrl + Shift + O: 引入imports语句Ctrl + Shift + T: 打开Open Type查找类文件Ctrl + Shift + F4: 关闭打开的所有窗口Ctrl + Shift + F: 整形Ctrl + Alt + ↓(↑) : 向下(上)复制本行 (搞笑)Ctrl + D : 删除本行 Ctrl + O: Open declarations

2016-10-14 12:48:34 164

原创 【字符串系列】最长上升子序列(LIS)

LIS(Longest increasing subsequence) 主要有O(nlogn)和O(n^2)两种解法,本博文主要介绍O(nlogn)解法,顺便提一下O(n^2)。首先说一下O(n^2)解法的思路,假设一个数组a[n],定义dp[i]为以a[i]结尾的LIS的值,那么对于a[i],有dp[i]=max{dp[k],k∈[1,i-1]且a[k]}+1,迭代求解,dp[n]就

2016-10-14 12:46:30 334

原创 【字符串系列】最长公共子序列(LCS)

LCS(longest common subsequent),暴力求解的复杂度为O(2^m*2^n),用dp求解的时间复杂度为O(m+n),本博文主要介绍LCS的dp求法,并且给出一点对应的模板题。LCS的思想很简单,声明一个dp数组,用dp[i][j]表示一个长度为i的字符串和一个长度为j的字符串的LCS,很容易得到转移方程:dp[i,j]=⎧⎩⎨⎪⎪0dp[i−

2016-10-14 12:42:08 340

原创 并查集模板及对应模板题

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。(来自百度百科)并查集的操作主要有3个:1,初始化:把每个点所在集合初始化为其自身。通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论何种

2016-10-14 12:40:52 557

原创 JDK、JRE、JVM的区别

不少人(包括我)在初学JAVA时常常会分不清或者记不住什么是JDK、JRE和JVM,但是这几个词又会时常出现,因此有必要彻底区分名了解这三者是什么。首先贴一张图说明上着之间的关系一、JDK(Java Development Kit)  JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。  JDK中包含JRE,在JDK的安

2016-10-14 12:39:53 342

原创 折半查找【三种写法】

二分查找,又叫折半查找。网上有很多写法,但是经过总结之后常见的有这三种写法,根据不同情况使用不同写法,至于算法的思路请自行理清。int bSearch(int begin, int end, int e) { int mi

2016-10-14 12:38:57 1000

原创 HDU 5878 -- 丑数打表(2016 ACM/ICPC Asia Regional Qingdao Online)

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5878题意:输入一个n,要求找出比n大的,因子只有2,3,5,7的最小的数。题解:首先说一下什么是丑数,因子只有2,3,5,7的数就是丑数。。。。然后,该怎么做呢?肯定不能从n开始,一个一个暴力找,从题目的样例来看,当n是10的9次方时,要找两万多遍,会超时。如果做过丑数相关的

2016-10-14 12:37:39 310

原创 hiho1234--Fractal(高精度比较问题)

时间限制:1000ms单点时限:1000ms内存限制:256MB描述This is the logo of PKUACM 2016. More specifically, the logo is generated as follows:1. Put four points A0(0,0), B0(0,1), C0(1,1), D0(1,0)

2016-10-14 12:35:59 235

原创 JAVA基本数据类型转换的主要内容和注意事项

JAVA基本数据类型转换JAVA不像PHP,JS,Python,是一门强类型语言,强类型语言就必定会涉及不少的强制类型转换,作为基础中的基础,有必要先熟悉JAVA的基本数据类型转换 本博文主要分为以下两部分:主要内容注意事项一,主要内容1,JAVA基本数据类型:boolean,byte,short,char,int,long,float,double 2,基本数据类型的分类:boolean为

2016-10-14 12:34:47 542

转载 数据结构专题——线段树

线段树一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)!性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b],线段树需要的空间为数组大小的四倍

2016-10-14 12:33:10 263

原创 一行代码求最大公约数(欧几里得算法)

本文要介绍的不是普通的欧几里德算法(辗转相除法),而是利用位操作实现的欧几里得算法。 利用位操作实现欧几里得算法主要有以下两个优点:1.代码量少  2.效率高。首先,欧几里德算法求最大公约数的做法是: ⒈ 令r为a/b所得余数(0 <= r < b) 若 r= 0,算法结束;b 即为答案。 ⒉ 互换:置 a←b,b←r,并返回第一步。int gcd(int a, int b){

2016-10-14 12:32:20 2098

原创 位操作的实用功能

利用位操作实现简单的功能位操作虽然会降低程序的可读性,但是我想,热衷于位操作的人大概都是被它的效率所吸引了。如果某些简单但常用的功能可以利用位操作实现,且用位操作实现的代码量相同或更少,我希望让这些位操作得到普及。 在介绍之前,先列举一下位操作符a&b //按位与a|b //按位或 a^b //按位异或 ~a //按位取反 a<<b

2016-10-14 12:31:19 362

空空如也

空空如也

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

TA关注的人

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