- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 Latex algorithm2e 的一些使用
在写算法伪代码的时候:如果需要的是 IF.....Then....\lIf{.......}如果需要写出 if elseif else end 的话,需要这样写了:\uIf{if condition}{something if \;}\uElseIf{elseif condition}{something elseif \;}\Else{something e...
2018-07-30 15:31:25 5925
原创 Lint Code:最长连续序列
描述给定一个未排序的整数数组,找出最长连续序列的长度。您在真实的面试中是否遇到过这个题? 是说明要求你的算法复杂度为O(n)样例给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 4 思路:首先想到的肯定是排序,这题直接排序,然后遍历一遍就可以,但是这肯定不是想要的答案,排序的话复杂度最低也是...
2018-07-29 15:17:03 194
原创 HashMap的扩容机制:JDK1.7,JDK1.8
参考文章:http://www.importnew.com/20386.htmlhttps://blog.csdn.net/z69183787/article/details/64920074?locationNum=15&fps=1以前看HashMap的时候,resize扩容部分没有仔细看,今天挤出时间,看之。1. 确定hash桶数组的索引位置我们当然希望这个Hash...
2018-07-25 22:33:02 11464 10
原创 7种不同的单例实现方式
1. 饿汉式poublic static singleton{ private static singleton instance = new singleton(); public singleton(){ } public static singleton getInstance(){ return instance; }}2.懒汉式public ...
2018-07-22 13:41:01 249
原创 TreeMap中的键,值能否为null?
今天想到一个问题,HashMap中键值都可以为null,ConcurrentHashMap,HashTable中键值不可以为null,以上参考:https://blog.csdn.net/gagewang1/article/details/54971965那么TreeMap呢?我们一起来看一下吧。1. 首先, 先分析简单的, value是否能为null? public ...
2018-07-17 00:11:34 17379 3
原创 LintCode:堆化
描述给出一个整数数组,堆化操作就是把它变成一个最小堆数组。对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。说明什么是堆?堆是一种数据结构,它通常有三种方法:push, pop 和 top。其中,“push”添加新的元素进入堆,“pop”删除堆中最小/最大元素,“top”返回堆中最小/...
2018-07-16 20:30:30 229
原创 LintCode : 重哈希
描述哈希表容量的大小在一开始是不确定的。如果哈希表存储的元素太多(如超过容量的十分之一),我们应该将哈希表容量扩大一倍,并将所有的哈希值重新安排。假设你有如下一哈希表:size=3, capacity=4[null, 21, 14, null] ↓ ↓ 9 null ↓ null哈希函数为:int hashcode(int key,...
2018-07-15 17:17:49 521
原创 Lintcode: 单词搜索
描述给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。样例给出board =[ "ABCE", "SFCS", "ADEE"]word = "ABCCED", ->返回 true,word = "SEE",-> 返回 true,word = &quo
2018-07-13 11:23:49 542
原创 LintCode:编辑距离
描述给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:插入一个字符删除一个字符替换一个字符样例给出 work1="mart" 和 work2="karma"返回 3思路使用dp, 先定义状态 f(i)(j) 单词1 的前i个 跟 单词2 的前j个 的最短编辑距离。如果 a[i] == b[j] , 那么f(i,j) = f(i-1,j-1)...
2018-07-13 10:12:24 308
原创 过滤器(filter)和拦截器(Interceptor)
Filter 过滤器基本功能: 对 servlet 容器调用 servlet 的过程进行拦截,从而在servlet 进行相应处理的前后实现一些特殊功能。实现方式:实现Filter接口,并由servlet容器进行调用和执行。具体方法:1 . init()方法 类似于 servlet 的 init 方法,创建 filter 对象后,立即被调用,且只被调用一次。 doFilter()方法,逻...
2018-07-11 20:39:42 386
原创 Servlet的本质及生命周期相关
1.Servlet简介是用于 java 编写的服务器端程序,其使用 java servlet API,当客户机发送请求到服务器时,服务器可以将请求信息发送给 servlet,并让 servlet 建立起服务器返回给客户机的响应。当启动 web 服务器 or 客户机第一次请求服务时,可以自动装入 servlet,装入后,servlet 继续运行直到其他客户机发出请求。2.Servlet容...
2018-07-11 20:35:51 171
原创 LintCode:删除排序链表中的重复数字 II
描述给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。样例给出 1->2->3->3->4->4->5->null,返回 1->2->5->null给出 1->1->1->2->3->null,返回 2->3->null思路:既然需要删除重复的元素,那么最重
2018-07-11 10:07:54 352
原创 LintCode : 不同的子序列
描述给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响。(比如,“ACE”是“ABCDE”的子序列字符串,而“AEC”不是)。 样例给出S = "rabbbit", T = "rabbit"返回 3思路:动态规划问题,一开始没有想出思路,看了: http://www.cnblogs.co...
2018-07-10 17:00:56 189
原创 LintCode: 拓扑排序
描述给定一个有向图,图节点的拓扑排序被定义为:对于每条有向边A--> B,则A必须排在B之前 拓扑排序的第一个节点可以是任何在图中没有其他节点指向它的节点 找到给定图的任一拓扑排序你可以假设图中至少存在一种拓扑排序说明Learn more about representation of graphs样例对于下列图:这个图的拓扑排序可能是:[0, 1, 2, 3, 4, 5]或者[0, 2...
2018-07-10 10:07:32 231
原创 Lint Code:分割回文串 II
描述给定一个字符串s,将s分割成一些子串,使每个子串都是回文。返回s符合要求的的最少分割次数。样例比如,给出字符串s = "aab",返回 1, 因为进行一次分割可以将字符串s分割成["aa","b"]这样两个回文子串思路:显然,看到这种最大最小问题,当然是动态规划问题,当然这道题也可以使用DFS来做。说下动态规划思路,先定义问题结构 : dp[i] : 代表到s的前i个字符是否为回文。然后我们就...
2018-07-09 14:39:59 519
原创 Lint Code: 单词拆分 I
描述给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。样例给出s = "lintcode"dict = ["lint","code"]返回 true 因为"lintcode"可以被空格切分成"lint code"思路这道题其实是一个字符串匹配+动态规划问题,它的子问题结构还是比较容易看出来的。首先定义 dp[i] : 到字符串s的第i个位置都可以匹配。子问题...
2018-07-08 10:54:48 277
原创 LintCode: Convert Sorted List to Binary Search Tree
描述给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树样例 21->2->3 => / \ 1 3思路:每次找到链表的中点,中点作为根节点,然后左边的链表形成的树为这个根节点的左子树,右边同理。需要注意的是,每次我们实际找的是中点前一个节点, 因为我们需要将前半段的链表断开,形成一个独立的链表。...
2018-07-06 15:52:54 134
转载 Java中的泛型相关知识
一、泛型的概念 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 C++中国实现泛型是使用模板类和模板方法,Java是从JDK1.5实现泛型的,下面我们来...
2018-07-05 17:15:25 189
原创 Lintcode : Merge K Sorted Lists
描述合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null思路:1. 利用归并排序,先两两合并,依次迭代,这里是利用一个递归的归并排序 public ListNode mergeKLists(List<ListNode> l...
2018-07-05 11:33:12 132
原创 Fork/Join 框架
分而治之 一直是一个有效地处理大任务的思想,当你不具备处理一个很大的任务时,可以将这个任务划分为多个小任务,记录下这些小任务的结果,最后将这些小任务的结果合并成最终想要的结果。 一、 在JDK中,fork/join框架主要干两件事情: 1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割 2.执行任务并合并...
2018-07-03 23:15:52 144
原创 LintCode: 带环链表 + 带环链表 II
1. 带环链表描述给定一个链表,判断它是否有环。样例给出 -21->10->4->5, tail connects to node index 1,返回 true挑战不要使用额外的空间思路: 可以先看上面这个图,a 是 起点,b 是 环的起点,b到d是一个环。这个c点是什么呢,下面我们来说说。首先链表的题目,我们首先会想到快慢指针,没错,这道题就用到了快慢指针。 c 就是快慢指针...
2018-07-03 20:34:38 190
原创 Java中用户线程与守护线程(Daemon)
Java分为两种线程:用户线程和守护线程所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)...
2018-07-02 11:25:44 302
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人