- 博客(109)
- 资源 (3)
- 收藏
- 关注
原创 数据结构—队列小结
队列1动态数组队列2链表队列3两栈实现队列4两队列实现栈5前k个元素逆置import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/** * Created by root on 17-11-12. */public
2017-11-12 13:30:46
483
原创 数据结构—栈小结
1数组栈2动态数组栈动态数组栈有两种实现方法,一种是每次扩充1位并进行复制,插入n个元素的时间复杂度位O(n^2)--1+2+...+n一种是每次扩充2倍并进行复制,插入n个元素的时间复杂度为0(n)...1+2+4+8...+n,此处使用这种最优化的方案。3链表栈4最小栈的优化版5栈的逆置(只用push和top)6数组跨度7数组跨度28栈排序9数组最大面积
2017-11-10 15:19:56
632
原创 数据结构—链表的操作小结
总结一下链表的相关操作1判断是否有环 2找到环的交界 3返回环的长度 4两个链表的公共节点 5链表逆置 6带有random指针的链表复制import java.util.HashMap;import java.util.Map;/** * Created by root on 17-11-9. */class Node{ int val;
2017-11-09 16:14:18
447
原创 数据结构—AVL树
AVL树----平衡二叉树平衡二叉树是一颗二叉树,而且平衡二叉树的左右子树的高度差小于等于1;平衡二叉树最关键的点在于插入操作。插入操作在不平衡的时候要进行【右旋,左旋,右左旋,左右旋等】右旋的条件为,AVL树插入新节点到某个节点的左孩子的左子树。左旋的条件为,AVL树插入新节点到某个节点的右孩子的有子树右左旋的条件为,AVL树插入新节点到某个节点的右孩子的左孩子处左右
2017-11-05 15:24:42
442
原创 数据结构-堆小结
总结堆的几种操作:删除操作(调整堆),添加堆调整堆:例如在进行删除操作的时候,我们将根结点与最后一个节点进行替换,替换以后,删除掉最后一个节点或在将lastSize(记录数组大小的指针)前移。int void reshape(int[] heap,int root){ boolean done=false;//判断orphan是否大于largeChild,用来跳出循环
2017-11-04 16:54:03
333
原创 数据结构—cloneable&&二叉树
1介绍cloneable接口,并引申与它相关的知识点:2二叉树相关知识点:一、cloneable接口首先强调一个问题,cloneable接口时空的,clone方法不是cloneable的方法!!!clone时object的方法,方法原型为protected object clone () throws CloneNotSupportException这里有两个细节,一 返回值是
2017-11-02 20:36:33
215
原创 数据结构—基本树的操作小结
整理几个树的算法。1树的复制:每次递归创建一个节点,此节点的左右孩子递归创建。public static Tree duplicate(Tree root){ Tree newRoot = new Tree(root.val); if (root.left!=null) newRoot.left=duplicate(root.left); if
2017-11-01 21:33:54
468
原创 neo4j小结一
Neo4j是一个NoSQL的图数据库管理系统。图表示为一些节点和连接这些节点的关系的集合,节点表示实体,关系表示实体之间的连接方式。Neo4j像其它数据库一样具有高效的查询性能。同时还具有完全事务管理特性,支持ACID事物管理。具有非常强的表现力。具有如下的特性:1节点,关系和属性构成图数据库的三个基本要素。2节点和关系的属性是一个key-value的数据集合3每个关系都有
2017-10-31 21:06:00
362
原创 数据结构-动态规划之找零钱
美元的硬币面值为1美分、5美分、10美分和25美分。找零钱数为63美分,最少的方案时2个25,1个10,3个1一用6枚硬币。可以使用贪婪法来找硬币,但是事实并非总是如此。例如,如果硬币面值多了一个21的,很明显最少的方案是3个21美分的,而不是6个硬币,但,贪婪法无法解决此类问题。即贪婪法只能保证局部最优,不能保证全局最优。考虑第一种方法,使用递归,计算所有可能组合的最小数目。首先
2017-10-31 19:27:56
535
原创 数据结构—分治法小结
分治由两部分组成。分:递归地求解更小的问题。治:子问题的解决方案形成了原问题的解决方案。原则上,至少包含两个递归调用的算法才是分治法。子问题之间通常是不相交的。因此FIB数列不属于分治法。最大连续子序列。最大连续子序列采用分治法思考,将输入一分为2,存在三种情况1完全在左边2完全在右边3一部分在左边,一部分在右边针对情况三我们考虑使用两个for循环分别寻
2017-10-31 14:36:07
973
原创 数据结构—递归小结
为什么数学归纳法能构成一个证明。 对于N=1,改定理成立,这称为基本情况。 使用归纳假设,假设对于任意K,定理成立,如果k成立,那么k+1也会成立。 这里针对一个例子来说一下数学归纳法的使用 对于求前N项的和,S(N)=S(N-1)+N的递归形式: public static long s(int n){ if(n==1)return 1;//基本情况
2017-10-30 20:03:05
784
转载 java动态代理学习
原文出处:http://mp.weixin.qq.com/s/de4XGeTzkAYe4sLo1m0B8g动态代理:AOP:对于添加日志的需求:可以指定某个包下面的所有的以add开头的方法,在执行前都要调用Logger.startLog(),在执行过后都要调用Logger.endLog()方法。对于增加事务支持的需求:所有以DAO结尾的类,所有的方法执行前都要调用Trans
2017-10-30 09:01:23
255
原创 java八大基本类型初始化
首先,java的八大基本类型为byte short int long float double char boolean对应的八大包装类型 Byte Short Integer Long Float Double Character Boolean其中对基本类型进行初始化的操作,可以得到一个默认值,对于包装类型初始化对象的时候也可以得到一个默认值,但是这两个默认值是不一样的。包装类
2017-09-30 09:58:10
5355
原创 HashMap、 HashTable 、Collections.synchronizedMap、 ConcurrentHashMap
HashMap 在单线程程序中经常使用到,而且都知道HashMap是线程不安全的,HashTable是线程安全。引用百度定义线程安全和线程不安全“线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得
2017-09-21 16:46:19
517
原创 linux 显示不出 wifi
重要的事情说三遍,wo ca ,wo ca ,wo ca 。新买了一个笔记本,8G 256SSD 2G独显的THINKPAD E470C。win10,果断用ubuntu 14.04 覆盖掉,结果,杯具了...无线网络找不到了。。。。。擦,找方法http://www.linuxdiyf.com/linux/30426.html这个试了N便,make的时候也没错,make instal
2017-06-20 11:41:51
4870
原创 42. Trapping Rain Water
package leecode;/** * Created by root on 17-6-16. */public class TrappingRainWater { /* 这个题的核心在于比对左侧最大和右侧最大,如果左侧最大小于右侧最大,左侧的右临才有灌水的可能,还要取决最大值的位置是否是当前访问的位置。 因此,加入的水就等于max与当前bar的差值,这个值最
2017-06-16 23:33:32
262
原创 135 Candy
package leecode;import org.junit.Test;/** * Created by root on 17-6-15. */public class Candy { //1 3 3 5 4 3 2 1 //1 1 1 1 1 1 1 1 //1 2 1 2 1 1 1 1 //1 2 1 5 4 3 2 1 /*
2017-06-16 00:06:54
241
原创 138. Copy List with Random Pointer
package leecode;import java.util.HashMap;import java.util.Map;/** * Created by root on 17-6-15. *///Definition for singly-linked list with a random pointer.class RandomListNode { int labe
2017-06-15 23:28:58
226
原创 133. Clone Graph
/*图的复制,考虑到一点就是如果label相同时认为是同一节点,环的存在,因此是不可以再new,为了保证时间,用hashmap会比较快 */Map,UndirectedGraphNode> hashMap=new HashMap();public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node==
2017-06-14 23:32:24
247
原创 41. First Missing Positive
/*时间复杂度有要求的,首先就是考虑用hashmap之类的数据结构,可以实现o(1)的查找速度题目的要求是找到不连续的第一个正数,因此,我们需要将所有的数防盗map的key中,然后从1开始往后找,找第一个间断的位置。极端情况下,数组内都是正数,且有序,返回max+1 */public int firstMissingPositive(int[] nums) { Map,Integ
2017-06-14 23:09:41
208
原创 12. Integer to Roman
/*第二种是递归的方法,思路都是就是从大到小判断拆分,从前向后添加罗马数字递归提交的时候出现超时现象关键是理解罗马数字的组成方式,有几个临界点需要额外提取,其他的重复添加即可可以百度以下罗马数字的组成方式。 */public String intToRoman(int num) { String str = ""; String [] symbol = {"M
2017-06-13 23:09:06
211
原创 13. Roman to Integer
/*思路就是,扫描一遍,先全部加到一起,然后再扫描一边,看一下左侧比右侧小的部分,就减去它的两倍(因为被多加了)还可以扫描的时候直接判断左侧和右侧的大小,小的话加-大的话+ */public int romanToInt(String s) { char[] chars=s.toCharArray(); int sum=0; for(int i=0;ilength;
2017-06-13 22:45:05
236
原创 89. Gray Code
/*Int Grey Code Binary 0 000 000 00^000 i=0将数字i右移一位,再与i异或运算 1 001 001 00^001 i=1将数字i右移一位,再与i异或运算 2 011 010 01^010
2017-06-12 21:24:17
250
原创 65. Valid Number
import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by root on 17-6-12. */public class Solution { public boolean isNumber(String s) { s = s.trim(); i
2017-06-12 20:47:17
249
原创 130. Surrounded Regions
/*针对这个问题:1首先如果row,col都是小于2,返回。2挑选出四个方向边界处为O的进行DFS遍历操作对于DFS函数,注意四个方向遍历的条件对于遍历到的O转换成*最后主函数处理,如果是*则变为O,如果是O说明没有遍历到,则变为X */public static void solve(char[][] board){ if(board.length2||board[0].le
2017-06-11 18:26:32
214
原创 151. Reverse Words in a String
/*这个题目的坑在于,两个单词中间可能有多个空格,单词前面后面也可能有多个空格。因此单纯的用split进行分割,会分出很多的"",这个时候需要进行判断,如果是"",就放到一个动态数组动态数组java中就会考虑用list,另外join方法也可以提供很大的方便。 */public String reverseWords(String s){ String[] news=s.split(
2017-06-11 16:46:32
214
原创 Java编程思想—并发编程小结二
一、同步队列 wait notifyall是一种低级的解决方式,更高的抽象级别使用同步队列来完成协作问题BlockQueue 的子类 LinkedBlockingQueue ArrayBlockingQueue SynchronousQueue1、ArrayBlockingQueue数据是放在一个数组中。LinkedBlockingQueue是放在一个Node节点中
2017-05-09 14:15:40
288
原创 java编程思想—并发编程小结一
1实现方法 1实现runnable接口,重写run方法,调用run方法 2new thread类,传入runnable接口实现类,使用thread的start方法,2一些方法 yield:暂停当前正在执行的线程对象,并执行其它线程 wait:线程等待,并释放锁,一般在sychronized块里面,一般放在while循环中。生产者消费者模型中,当队列已满的时候,生产者wait,队
2017-05-09 14:15:05
228
原创 python数据分析与挖掘实战—聚类算法对比
#-*-coding:utf-8-*-import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsx1,y1=datasets.make_circles(n_samples=5000,factor=.6,noise=0.05)x2,y2=datasets.make_blobs(n_sampl
2017-05-07 14:50:02
1980
原创 Python数据分析与挖掘实战—挖掘建模
常用的分类与预测算法1回归模型分类1线性回归---自变量因变量线性关系,最小二乘法求解2非线性回归--自变量因变量非线性关系,函数变换为线性关系,或非线性最小二乘方法求解3logistic回归--因变量一般有1和0两种取值,将因变量的取值范围控制再0-1范围内4岭回归--自变量之间具有多重共线性5主成分回归--自变量之间具有多重共线性一般自变量和因变量之间存在线性关系的
2017-05-02 23:10:04
3110
原创 java编程思想-内存空间分配(常量池)
package String;public class StringEqual { public static void main(String args[]){ String s1="hello"; String s2="hello"; Double d1=1.0; Double d2=1.0; Floa
2017-05-01 19:42:28
321
原创 python数据分析与挖掘实践—拉格朗日插值法
缺失值处理:举止,中位数,众数插补法使用固定值(规定的标准值)最近邻插补法回归方法插值法插值法有拉格朗日差值和牛顿插值法。一个较大的区别是,当节点增减的时候,拉格朗日插值必须重新计算,牛顿法则 可以避免这一点。下面是python scipy中的lagrange插值函数的使用,使用某个插值点前后的5个值x=[0,1,2,3,4,6,7,8,9,10],y=[y0,y1
2017-04-30 20:36:50
7720
13
原创 python数据挖掘与分析实战—1、2、3
一、数据挖掘的建模过程:1.1定义挖掘目标:1.1.1动态的菜品推荐1.1.2客户进行细分,关注最有价值的客户1.1.3基于菜品的历史销售情况,对菜品销量进行预测,预备原材料1.1.4基于大数据,优化选址,菜式调整1.2数据取样随机抽样,分类抽样,等距抽样1.3数据探索1.3.1异常值分析1.3.2缺失值分析1.3.3相关性分析1.3.4周期性分析
2017-04-30 18:14:00
2622
原创 java编程思想——递归的方式,添加目录和文件
public static void main(String args[]){ File file=new File("."); System.out.println(listFile(file));}static class TreeInfo{ //设置两个list,一个用来存目录,一个用来存文件 List directorys=new ArrayList;
2017-04-29 17:24:37
542
原创 final、finally、finalize
一、final是修饰符修饰类的时候,类不可以被继承修饰成员函数的时候,成员函数不可以被重写,多态机制被破坏。修饰成员变量的时候,1:基本数据类型,代表不可更改。2:引用数据类型,引用不可更改,引用的对象是可以更改的二、finally语句块try--catch--finallyfinally最终被执行的部分,一般用来进行资源关闭清理的操作,public class F
2017-04-28 17:09:21
221
原创 string,stringbuilder,stringbuffer
1、string是不可变的对象,对string类型进行改变都是生成一个新的对象,指针指向新的string。经常改变内容的字符串不要用string,如果无用的对象变多的话,GC就会开始工作了,速度是非常慢的。2、stringbuider的每次操作都是针对对象本身进行操作,因此理论上,字符串的拼接操作是要比纯string对象相加要快的。3、stringbuffer是线程安全的,跟stringb
2017-04-24 22:13:39
203
原创 四种方式对数据进行统计
表的结构id,name,time1,a,1992-112,a,1992-123,b,1992-114,b,1992-125,d,1992-136,b,1992-137,c,1992-11逆序输出登录次数最多的用户,以及登录的次数1在linux下,进行分析sed '1d' data.txt | awk -F, '{print $2}' | sort
2017-04-23 20:57:57
993
原创 hmm------java代码实现的viterbi算法
五元组:观测序列o状态序列s初始状态概率向量π状态转移概率矩阵A观测概率矩阵B这里讨论的是解码的问题,已知o,s,π,A求,求最有可能的状态序列shmm的两个条件,有限历史性假设--------------------每个状态序列只与它前面一个状态序列有关 独立输出假设-----------------------某一状态下的输出与其它状态下的输出相互独立ja
2017-04-23 20:41:43
864
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人