自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 KNN算法

1.引言k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。KNN 模型可以获得精确的推荐结果并为结果给出合理的解释,它们是CF 推荐系统中最早被使用也是直至目前最流行的一类模型。2.KNN算法模型2.1算法模型图示它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集...

2019-04-28 21:16:00 520

转载 堆排序(heap sort)

参考博客:http://bubkoo.com/2014/01/14/sort-algorithm/heap-sort/1.二叉树二叉树的第 i 层至多有 2i-1个结点;深度为 k 的二叉树至多有 2k- 1 个结点;对任何一棵二叉树 T,如果其终端结点数为 n0,度为 2 的结点数为 n2,则n0= n2+ 1。二叉树又分为完全二叉树(complete binary...

2018-03-12 22:35:00 125

转载 复原二叉树

1.由(preorder+inorder)复原/* * preorder:先序遍历数组 * ps,pe:先序数组的首元素和末元素的索引 * inod:中序遍历数组 * is,ie:中序数组的首元素和末元素的索引 */public class Solution { public TreeNode buildTree(int[] preorder,...

2018-03-12 10:37:00 132

转载 二叉树的广度优先遍历(层次遍历)

import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * ...

2018-03-11 20:47:00 418

转载 二叉树(BT)相关

1.same tree  /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ ...

2018-03-11 20:21:00 384

转载 BST(二叉搜索树)相关

1.BST的合法性:validate-binary-search-tree class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { ...

2018-03-11 11:21:00 90

转载 二叉树遍历(先序、中序、后序)

二叉树的遍历(递归与非递归)遍历:traversal  递归:recursion栈----------回溯----------递归栈和回溯有关本文讨论二叉树的常见遍历方式的代码(Java)实现,包括前序(preorder)、中序(inorder)、后序(postorder)、层序(level order),进一步考虑递归和非递归的实现方式。递归的实现方法...

2018-03-10 22:05:00 1348

转载 排序算法

leetcode待解决问题:https://www.nowcoder.com/practice/4345e55fdb03498a89a97ec18e62b3ab?tpId=46&tqId=29103&rp=4&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking#堆排序:https://itime...

2018-03-07 16:05:00 73

转载 查找算法

1.顺序查找 (线性查找)2.二分查找(折半查找)时间复杂度:O(logn) 1 public class Solution { 2 3 public static int binarySearch(int[] num,int key) { 4 int low=0; 5 int high=num.l...

2018-03-03 21:13:00 53

转载 归并排序算法

归并排序讲解(经典):http://blog.csdn.net/jianyuerensheng/article/details/51262984http://blog.51cto.com/flyingcat2013/1281026归并排序:归并排序是基于一种被称为“分治”(divide and conquer)的策略。归并排序就是利用归并的思想实现的排序方法。而且充分...

2018-03-03 19:55:00 70

转载 算法时间复杂度

一.数学模型1.算法的时间复杂度和 执行每条语句的频率 有关2.常见的增长数量级函数描述                            函数常数级别                           1 对数级别                           logN线性级别                ...

2018-02-04 11:59:00 74

转载 动态规划dp

一.概念:动态规划dp:是一种分阶段求解决策问题的数学思想。    总结起来就一句话:大事化小,小事化了二.例子  1.走台阶问题F(10):10级台阶的走法数量所以:F(10)=F(9)+F(8)        F(9)=F(8)+F(7),F(8)=F(7)+F(6) .......  我们把一个复杂的问题分阶段进行简化,逐步简化成简单的问题。这就是动...

2018-01-25 11:25:00 95

转载 数据结构Java实现04---树及其相关操作

首先什么是树结构?树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树。树的特点在一个树结构中,有且仅有一个结点没有直接前驱,它就是根节点。除了根节点,其他结点有且只有一个直接前驱每个结点可以有任意多个直接后继树的名词解释结点的度:一个结点包含子树的数...

2018-01-04 21:18:00 105

转载 关于递归

1.什么是递归?  递归(Recursion):(递区---归来) 方法直接或间接调用自身2.递归的两个条件  递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件。  (1)子问题与原问题为同一类型  (2)...

2018-01-04 11:46:00 94

转载 数据结构与算法

转载于:https://www.cnblogs.com/midiyu/p/8183893.html

2018-01-03 15:15:00 69

转载 Java正则表达式

一.Java中的正则表达式的一些特点1.java中 \\ 表示正则表达式,所以^\d+(\.\d+)?,可以匹配的实例:"5", "1.5" 和 "2.21"。但在程序中要写成^\\d+(\\.\\d+)?2.普通的反斜线表示为:\\\\  二.String内建的正则表达式功能  1.boolean matches(String regex)  检验这个字符串...

2018-01-02 21:38:00 74

转载 Java String相关

一.String类的常用方法1. int indexOf(String s)                   字符串查找2. int lastIndexOf(String str) 3. char charAt(int index)                   获取指定索引位置的字符4. String substring(int beginInd...

2018-01-02 15:36:00 64

转载 Java实现栈和队列

栈:LIFO(后进先出)队列:FIFO(先进先出)栈的顺序存储结构实现:* top:栈顶指针,初始化top=-1* 入栈:data[++top]=e* 出栈:(E)data[top--]* 得到栈顶元素:(E)data[top]* 空:top=-1 1 package com.myutil.stack; 2 3 /**...

2018-01-01 19:23:00 86

转载 数据结构Java实现03----栈:顺序栈和链式堆栈

一、堆栈的基本概念:堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除操作。先进后出:堆栈中允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。堆栈的插入和删除操作通常称为进栈或入栈,堆栈的删除操作通常称为出栈或退栈。备注:栈本身就是一个线性表,所...

2018-01-01 11:17:00 277

转载 经典博客

详解java.lang.ref包中的4种引用转载于:https://www.cnblogs.com/midiyu/p/8159373.html

2017-12-31 23:17:00 42

转载 数据结构Java实现02----单向链表的插入和删除

文本主要内容:链表结构单链表代码实现单链表的效率分析一、链表结构: (物理存储结构上不连续,逻辑上连续;大小不固定) 概念:  链式存储结构是基于指针实现的。我们把一个数据元素和一个指针称为结点。    数据域:存数数据元素信息的域。     指针域:存储直接后继位置的域。  链式存储结构是用指针把相互直...

2017-12-31 21:45:00 253

转载 数据结构Java实现01----线性表与顺序表

一、线性结构:如果一个数据元素序列满足:(1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素;(2)第一个数据元素没有前驱数据元素;(3)最后一个数据元素没有后继数据元素。则称这样的数据结构为线性结构。二、线性表抽象数据类型:1、线性表抽象数据类型的概念:线性表抽象数据类型主要包括两个方面:既数据集合和该数据集合上的...

2017-12-31 18:34:00 97

转载 JAVA类加载和反射介绍

http://www.cnblogs.com/lijunamneg/archive/2013/03/25/2980991.html转载于:https://www.cnblogs.com/midiyu/p/8151284.html

2017-12-30 21:39:00 50

转载 Java集合操作精华总结

一.Set1.HashSetboolean add(E e)      添加                 访问boolean remove(E e)    删除Iterator<E> iterator    遍历int size()         大小boolean isEmpty()     是否为空...

2017-12-29 18:51:00 67

转载 【由浅入深理解java集合】(五)——集合 Map

前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap。关于Map的一些通用介绍,可以参考第一篇文章。由于Map与List、Set集合的某些特性有重合,因此观看本篇文章的会参考到之前的一些内容,最下方有链接。如果已经有这方面的基础,那么对Map的学习将会事半功倍。HashMap...

2017-12-29 18:20:00 84

转载 【由浅入深理解java集合】(四)——集合 Queue

今天我们来介绍下集合Queue中的几个重要的实现类。关于集合Queue中的内容就比较少了。主要是针对队列这种数据结构的使用来介绍Queue中的实现类。Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。...

2017-12-29 17:19:00 76

转载 【由浅入深理解java集合】(三)——集合 List

第一篇文章中介绍了List集合的一些通用知识。本篇文章将集中介绍List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList。一、List集合关于List集合的介绍及方法,可以参考第一篇文章。List集合判断元素相等的标准List判断两个对象相等只要通过equals()方法比较返回tru...

2017-12-29 15:30:00 97

转载 Java根类Object的方法说明

Java中的Object类是所有类的父类,它提供了以下11个方法:public final native Class<?> getClass()public native int hashCode()public boolean equals(Object obj)protected native Object clone() throws Clon...

2017-12-29 14:16:00 98

转载 【由浅入深理解java集合】(二)——集合 Set

上一篇文章介绍了Set集合的通用知识。Set集合中包含了三个比较重要的实现类:HashSet、TreeSet和EnumSet。本篇文章将重点介绍这三个类。  一、HashSet类HashSet简介HashSet是Set接口的典型实现,实现了Set接口中的所有方法,并没有添加额外的方法,大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算...

2017-12-28 12:06:00 96

转载 【由浅入深理解java集合】(一)——集合框架 Collction、Map

本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解。具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue。  Java集合类简介:Java集合大致可以分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而M...

2017-12-28 11:56:00 80

转载 六.HashMap HashTable HashSet区别剖析总结

HashMap、HashSet、HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析:在分析之前,先将其区别列于下面:1、HashSet底层采用的是HashMap进行实现的,但是没有key-value,只有HashMap的key set的视图,HashSet不容许重复的对象Hashtable是基于Dictiona...

2017-12-27 20:56:00 114

转载 五.HashTable原理及实现学习总结

有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有一个就是马上要讲解的HashTable。对于HashTable而言,它在很大程度上和HashMap的实现差不多,如果我们对HashMap比较了解的话...

2017-12-27 20:48:00 91

转载 四.HashSet原理及实现学习总结

在上一篇博文(HashMap原理及实现学习总结)详细总结了HashMap的实现过程,对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素。所以如果对HashMap比较熟悉,那么HashSet的原理应该很好理解!一.HsahSet概述HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它...

2017-12-27 20:36:00 100

转载 3.1HashMap源码分析

在前篇博文中(HashMap原理及实现学习总结)详细总结了HashMap的原理及实现过程,这一篇是对HashMap的源码分析。 1 package dataStructure.hash; 2 3 import java.io.*; 4 import java.util.AbstractCollection; 5 import java.util.Abs...

2017-12-27 20:20:00 60

转载 三.HashMap原理及实现学习总结

HashMap是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构。本篇主要是从HashMap的工作原理,数据结构分析,HashMap存储和读取几个方面对其进行学习总结。关于HashMap的完整源码分析请查看下一篇。一. HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()...

2017-12-27 20:17:00 74

转载 二.LinkedList原理及实现学习总结

一、LinkedList实现原理概述LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。二、LinkedList类定义1 ...

2017-12-27 16:35:00 60

转载 一.ArrayList原理及实现学习总结

一、ArrayList介绍ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。类似于C语言中的动态申请内存,动态增长内存。当创建一个数组的时候,就必须确定它的大小,系统会在内存中开辟一块连续的空间,用来保存数组,因此数组容量固定且无法动态改变。ArrayList在保留数组可以快速查找的优势的基础上,弥补了数组在创...

2017-12-27 15:59:00 72

转载 Java集合框架学习

http://blog.csdn.net/lcore/article/details/8868943https://www.jianshu.com/p/63e76826e852https://www.jianshu.com/p/b54f1df33f84https://zhuanlan.zhihu.com/p/27756586转载于:https://www.cnblogs....

2017-12-26 21:14:00 61

转载 操作系统面试知识点总结

一.操作系统概述1. 操作系统的四个特性并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件)共享:系统中的资源可以被内存中多个并发执行的进线程共同使用虚拟:通过时分复用(如多道程序技术,分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个异步:系统中的进程是以走走停停的方式执行的,且以一种不可预...

2017-12-19 14:57:00 121

转载 Java面试经典题目合集

321.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?  “static”关键字表明一个成员变量或者是成员方法与类相关,可以在没有所属的类的实例变量的情况下被访问。  Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任...

2017-12-18 21:49:00 378

空空如也

空空如也

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

TA关注的人

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