- 博客(20)
- 资源 (58)
- 问答 (1)
- 收藏
- 关注
原创 leetcode hard模式专杀之72. Edit Distance
这题是比较标准的动态规划吧,动态规划里不算难,关键找出递归表达式,上代码:public class Solution { public int minDistance(String word1, String word2) { // Start typing your C/C++ solution below // DO NOT write in
2017-06-13 20:17:06 198
原创 leetcode hard模式专杀之68. Text Justification
这道题又是属于思路不难,但是边界条件极难把握准确的,题目,是一道联系思考边界条件的难得好题,值得仔细琢磨。思路其实非常简单,遍历,计算该塞多少空格,拼字符串,加入list,说起来就这么简单,没有任何难想的地方,但是组织代码有一定的难度,估计这个就是这道题为hard模式的原因吧,不bb了,上代码:public class Solution { public List full
2017-06-11 22:25:00 227
原创 接前-后序遍历二叉树(非递归)
上代码:class Node { int data; Node left, right; Node(int item) { data = item; left = right = null; }}class BinaryTree { Node root; public List iterativePos
2017-06-11 19:35:09 177
原创 接前-中序遍历二叉树(非递归)
import java.util.Stack;class Node { int data; Node left, right; Node(int item) { data = item; left = right = null; }}class BinaryTree { Node root; public vo
2017-06-11 12:30:18 185
原创 前序遍历二叉树(非递归)
前一篇做了leetcode一道二叉树的hard模式,感觉自己对二叉树的一些数据结构不太敏感,于是打算做个总结,把二叉树的常见遍历方式记录一下,从本篇开始,将按如下顺序实现:1.前序遍历二叉树(非递归)2.中序遍历二叉树(非递归)3.后续遍历二叉树(非递归)4.前序遍历二叉树(递归)5.中序遍历二叉树(递归)6.后续遍历二叉树(递归)本篇为1.前序遍历二叉树,上代
2017-06-11 11:50:01 1559 1
原创 leetcode hard模式专杀之99. Recover Binary Search Tree
这题的思路我还是很快想出来了,奈何二叉树的数据结构和遍历模式不太敏感,代码迟迟没写出来,看来二叉树类的题目需要专项训练一下,补补,下一篇博客我会把二叉树的几种常见算法总结一下。说思路吧,其实关键就是找到两个交换过的位置就行了,接下来做个交换就行,BST本身如果把它平展开来,就是一个排序序列,例如1,2,3,4,5,6,7,那么这样一个序列假如随机交换两个数会发生什么呢?例如变成1,5,
2017-06-11 11:24:28 229
原创 leetcode hard模式专杀之45. Jump Game II
这道题跟其父题Jump Game都属于实现出来不难,但是通过OJ不容易的题目,反正我是这样感觉的,因为第一版我很快都写出来了,但是通过OJ却弄了七八次,蛋疼无比,不过总算是没有看答案,坚持自己写出来了,能仔细琢磨总结其经验,也不枉花了这么多时间。原本以为用其父题目稍微改改代码就能完成,后来发现不是这样,时间复杂度完全通不过,于是苦苦琢磨其他方式。最后思路大概是这样的,从第一个开始通过i+nums[
2017-06-10 21:47:40 208
原创 leetcode hard模式专杀之55. Jump Game
这道题其实是medium模式,不过因为他是Jump Game II的前提,所以也一并做了,思路倒是不负责,动态规划来做就好,不过这题让我提交了七八次才通过oj,前几次是超时,后几次修改是有些条件没考虑,所以是很值得仔细琢磨的一道题,思路是这样的,从0开始,想象可以往后染色,然后在染色范围内,继续往后染色,如果某次染色的最大index大于等于最后的index即length-1,则返回true,如果一
2017-06-09 11:54:41 219
原创 leetcode hard模式专杀之57. Insert Interval
这题思路 不算难,但同样是要注意边界条件, high level的思路是如果新插入的interval没有任何overlap,那就直接插入,否则,就通过如下方式合并:删掉所有的有overlap的interval,再插入一个新的interval那么问题来了,如何确定哪些是overlap的interval, 新的interval又是从哪儿到哪儿?要回答这两个问题,通过两次循环遍历足矣,上代码:
2017-06-08 14:11:26 301
原创 leetcode hard模式专杀之52 N-Queens II
这道题我不清楚跟N-Queens的区别是什么,核心算法都是一样的,只是这道题是计数,前一道是计算具体的组合,组合都出来了,计数还会难吗?不bb,上代码:public class Solution { public int totalNQueens(int n) { Map result = new HashMap<>(); int[] q=new
2017-06-07 22:04:25 268
原创 leetcode hard模式专杀之51. N-Queens
继续leetcode hard模式, 八皇后问题的一般版,这种举一反三的题目值得好好琢磨,典型的回溯法,思路就不多说了,上代码,注意一一些边界条件的细节:public class Solution { public List transfer(int[] q){ List result = new ArrayList<>(); for(int
2017-06-07 20:19:08 273
原创 leetcode hard模式专杀之37. Sudoku Solver
继续刷题leetcode之数独这题乍一看挺吓人的 ,不过正好前几个礼拜做过八皇后问题,对回溯法有一定的记忆和认知,然后还有的技巧是位运算,hashmap记录等等,尽可能地节省空间复杂度。思路如下,先遍历一遍二维数组,本次遍历是为了收集统计数据,哪些统计数据呢?有三个,第一,每一行还差哪些数字没填, 第二,每一列还有哪些数字没填,第三,每个block还有哪些数字没填,为了节省空间,那些数字没填就
2017-06-07 17:53:45 282
原创 leetcode hard模式专杀之41 First Missing Positive
这题看下来第一灵感就是用位运算,因为要用 O(n) time and uses constant space.,于是很快地写了一版,果不其然,用位运算一定要考虑溢出的问题啊,第一版草草这么写果然就溢出了,因为把1 左移整数位,java这边移动个32位基本就到顶了,就算用long,移个64位差不多也到顶了,于是想到一个解决方案即使用多个整数,一个整数就算能表示k个位置,两个整数不就可以表示2k个
2017-06-06 23:16:40 238
原创 leetcode hard模式专杀之42. Trapping Rain Water
继续刷leetcode hard模式, 这题是我喜欢的类型,可能因为我空间想象力还行,这题在2次内通过oj,思路如下: 可以这样想, 每个数字上方拖着的空间如果左边有墙,右边也有墙,那么这个水就流不出去,而墙可以用左边最高的数字和右边最高的数字来表示,例如位置i,左边最高墙是3,右边最高墙是4, 那么i上能托几格水呢?当然是min(3,4)-i啦,所以这个问题就转换为如何高效率地找出每个位置i
2017-06-06 17:06:22 302
原创 leetcode hard模式专杀之32. Longest Valid Parentheses
继续leetcode hard模式,这题整了我好久,想了好几种方法,最终都没能通过oj都时间复杂度,然后忍不住看了答案,简洁到尿,想死, 上代码:import java.util.Stack;public class Solution { public int longestValidParentheses(String str) { int n = str.
2017-06-06 16:09:05 210
原创 leetcode hard模式专杀之76 Minimum Window Substring
继续刷leetcode hard模式 https://leetcode.com/problems/minimum-window-substring/#/description这题感觉算是hard模式中比较容易的 一题, 不过算法非常典型, 是一个举一反三的好例子, 很多看起来很难的题目都可以通过这题找到原始思路。按说找一个字符串窗口不是难事,但是要保持O(n)的时间复杂度,
2017-06-05 13:10:48 293
原创 leetcode hard模式专杀之25 Reverse Nodes in k-Group
这段时间出去面试发现自己做算法题的熟练度还是太不够,继续集训一下,专做leetcode的hard模式,这道题我估计如果在面试时碰到,八成要死,这种题属于逻辑想出来不算复杂,但是写出代码来坑巨多的题目,估计这也是这种题被放在hard模式的原因吧。面试的时候如果出这种题,未必是考你逻辑,而是考你思维严密度,这题的happy flow我很快就做出来了,但是真正通过leetcode OJ却是在
2017-06-04 11:58:29 376
原创 leetcode hard模式专杀之23 merge k sorted lists
这个题目思路不算很复杂,但是容易出错,leetcode把它算作hard模式的题目,我看在medium在hard之间,不过如果面试的时候碰到,也就坑死爹。思路如下:假设每个链表从小到大排列,头是最小值,则每次从所有链表头中找出最小值, 然后把它摘下来,放到结果链表中,从k个值中找到最小值,不是个难事,不过如果每次都去计算,哪怕用一次冒泡,算法复杂度也是够呛的,因为摘下来后最小
2017-06-03 16:51:34 310
次序统计 order statistics 算法
2011-06-07
java操纵ftp上传的客户端实现
2011-06-04
基数排序radix sort
2011-06-02
计数排序JAVA实现counting sort algorithm
2011-05-31
第一个hibernate程序
2011-05-23
java围棋v10
2013-08-13
inside java virtual machine(深入学习java虚拟机)
2011-07-10
update sybase越来越慢,求大神解救
2013-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人