自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 DP3 最长上升子序列 LIS @geeksforgeeks

package DP;import java.util.Arrays; // 最长递增子序列-Longest Increasing Subsequence/**Let arr[0..n-1] be the input array and L(i) be the length of the LIS till index i such that arr[i] is part of LIS

2013-12-24 00:17:14 1478

原创 DP背包之01背包、完全背包、多重背包笔记

这是个经典话题,值得好好研究一番,本文作为学习笔记将会不断更新。主要参考了以下资料:背包问题九讲:http://love-oriented.com/pack/Index.html背包之01背包、完全背包、多重背包详解 :http://www.wutianqi.com/?p=539背包问题九讲笔记_01背包:http://blog.csdn.net/insistgogo/ar

2013-12-23 13:32:36 4029 1

原创 Word Break 判断是否能把字符串拆分为字典里的单词 @LeetCode

思路:1 DFS 但是TLE2 DP 还需多练。。。package Level5;import java.util.HashSet;import java.util.LinkedHashSet;import java.util.Set;/**Word Break Given a string s and a dictionary of words dict,

2013-12-23 07:01:04 4961 1

转载 本周小结

http://www.cnblogs.com/feiling/archive/2012/08/12/2634512.html回顾上个月写的代码发现自己有如下缺点:1. 在写代码之前没能详细的设计好,写出来的代码往往包含各种逻辑错误,这一点比较致命!2. 很多内容经常不求甚解,这一点需要向师兄学习3. 工作的时候容易分心,工作和娱乐分不开,这个是需要改正的

2013-12-23 05:54:09 873

原创 Clone Graph 图的复制 @LeetCode

思路:图的复制,基于BFS,用到了Hashtable来去重参考:图的遍历有两种方式,BFS和DFS这里使用BFS来解本题,BFS需要使用queue来保存neighbors但这里有个问题,在clone一个节点时我们需要clone它的neighbors,而邻居节点有的已经存在,有的未存在,如何进行区分?这里我们使用Map来进行区分,Map的key值为

2013-12-23 05:52:36 8347

原创 Candy 根据排名分糖果 @LeetCode

一些例子:1 2 3 3 3  =》 8  因为candy数可以是1 2 3 1 11 2 3 2 3 =》9  因为candy数可以是1 2 3 1 2思路:1 d[i] 是给第i个小孩最少几块糖rank[i] > rank[i - 1],必须比前一个多给一块,d[i] = d[i - 1] + 1rank[i] == rank[i

2013-12-23 04:56:31 5528

原创 Permutation Sequence 求第k个的排列序列 @LeetCode

思路:1 求出所有的排序,直到k为止。至少Java会超时。2 数学,找规律,不好想!  参考 http://fisherlei.blogspot.com/2013/04/leetcode-permutation-sequence-solution.html假设有n个元素,第K个permutation是a1, a2, a3, .....   ..., an那么a1是哪一个数字呢?

2013-12-22 12:31:15 7988 2

原创 1368:二叉树中和为某一值的路径 @jobdu

不知道为什么只通过了第二组数据,把另一个Java AC的代码也贴出来比较一下吧。题目1368:二叉树中和为某一值的路径时间限制:1 秒内存限制:32 兆特殊判题:否提交:1238解决:273题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

2013-12-22 11:19:51 1407

原创 1367:二叉搜索树的后序遍历序列 @jobdu

从右向左扫描,找到第一个比最右节点小的数,然后从那个数开始再向左搜索,查看有没有比最右节点大的数,有则非BST如果没有,则对左子树区间和右子树区间进行递归题目1367:二叉搜索树的后序遍历序列时间限制:1 秒内存限制:32 兆特殊判题:否提交:724解决:359题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。

2013-12-22 09:39:03 1454

原创 1523:从上往下打印二叉树 @jobdu

基础题,就是一个普通的Level Order Traversal题目1523:从上往下打印二叉树时间限制:1 秒内存限制:128 兆特殊判题:否提交:384解决:156题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。输入:输入可能包含多个测试样例,输入以EOF结束

2013-12-22 09:10:29 1494

原创 Text Justification 文本对齐 @LeetCode

快被这道题搞死了。。根据这篇重写了 http://www.cnblogs.com/TenosDoIt/p/3475275.html分析:这一题需要注意两个点,a、当该行只放一个单词时,空格全部在右边 b、最后一行中单词间只有一个空格,其余空格全部在右边。然后只要贪心选择,在一行中尽量放多的单词。package Level4;import java.util.ArrayL

2013-12-21 06:14:45 4380

原创 Permutations 排序(有重复数)II @LeetCode

比起http://blog.csdn.net/fightforyourdream/article/details/14217105多加了一个while来去重,发现这个去重方法在另一道题也用过,同样也是DFS里面去重,很好用!另外就是在最前面加了一个sort,因为如果没加,当输入乱序时就会Output Limit Exceed!package Level4;import ja

2013-12-20 14:41:26 2815

原创 逆波兰表达式转换 RPN infix

首先参考这篇:http://blog.csdn.net/sgbfblog/article/details/8001651一、后缀表达式求值后缀表达式也叫逆波兰表达式,其求值过程可以用到栈来辅助存储。假定待求值的后缀表达式为:6  5  2  3  + 8 * + 3  +  *,则其求值过程如下:1)遍历表达式,遇到的数字首先放入栈中,此时栈如下所示:2)接着读

2013-12-20 04:19:36 1598

原创 Celebrity Problem

Celebrity Problemimport java.util.Stack;/**In a party of N people, only one person is known to everyone. Such a person may be present in the party, if yes, (s)he doesn’t know anyone in t

2013-12-19 10:26:45 3649

原创 1366:栈的压入、弹出序列 @jobdu

题目1366:栈的压入、弹出序列时间限制:1 秒内存限制:32 兆特殊判题:否提交:1157解决:426题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是

2013-12-19 06:51:49 1553

原创 1522:包含min函数的栈 @jobdu

题目1522:包含min函数的栈时间限制:1 秒内存限制:128 兆特殊判题:否提交:488解决:164题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(1接下来有n行

2013-12-19 06:15:16 1499

原创 1391:顺时针打印矩阵 @jobdu

题目1391:顺时针打印矩阵时间限制:1 秒内存限制:32 兆特殊判题:否提交:1373解决:370题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,

2013-12-19 05:50:51 1228

原创 1521:二叉树的镜像 @jobdu

题目1521:二叉树的镜像时间限制:1 秒内存限制:128 兆特殊判题:否提交:661解决:165题目描述:输入一个二叉树,输出其镜像。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(0Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子

2013-12-19 04:58:13 1335

原创 Sort List 链表排序@LeetCode

要求时间为O(nlogn),最适合就是merge sort,每次从n/2处断开,对两段递归sort,然后再merge起来。空间是O(logn)用了栈空间package Level4;import Utility.ListNode;/** * Sort List * * Sort a linked list in O(n log n) time using const

2013-12-17 12:04:53 1914 2

原创 Minimum Window Substring 最小子串窗口@LeetCode

不好做的一道题,参考了许多资料:http://leetcode.com/2010/11/finding-minimum-window-in-s-which.htmlhttp://www.geeksforgeeks.org/find-the-smallest-window-in-a-string-containing-all-characters-of-another-string/

2013-12-17 11:27:20 3514

原创 Multiply Strings 两个字符串代表数字相乘@LeetCode

这道题一开始觉得很麻烦,后来参考了http://leetcodenotes.wordpress.com/2013/10/20/leetcode-multiply-strings-%E5%A4%A7%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B9%98%E6%B3%95/comment-page-1/#comment-122

2013-12-17 09:28:51 14926

原创 Reorder List 链表首尾交叉排列@LeetCode

思路就是:1 用快慢指针找到中间节点2 翻转中间节点后一个元素到最后一个元素区间的所有元素3 断开前半段和翻转后的后半段元素4 把前半段和翻转后的后半段元素以交叉的方式合并起来5 特殊处理输入为空,只有一个元素和只有两个元素的corner case,就是多加几个if...return感想:可以看出翻转链表实在是非常重要,是做很多题目的基础。还有merge的思想也很重

2013-12-17 05:30:05 2925 1

原创 1517:链表中倒数第k个结点 @jobdu

题目1517:链表中倒数第k个结点时间限制:1 秒内存限制:128 兆特殊判题:否提交:460解决:233题目描述:输入一个链表,输出该链表中倒数第k个结点。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和k(0

2013-12-17 04:37:44 1088

原创 1516:调整数组顺序使奇数位于偶数前面 @jobdu

题目1516:调整数组顺序使奇数位于偶数前面时间限制:1 秒内存限制:128 兆特殊判题:否提交:650解决:224题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。输入:

2013-12-17 04:15:55 1481

原创 1515:打印1到最大的N位数 @jobdu

题目1515:打印1到最大的N位数时间限制:1 秒内存限制:128 兆特殊判题:否提交:625解决:323题目描述:给定一个数字N,打印从1到最大的N位数。输入:每个输入文件仅包含一组测试样例。对于每个测试案例,输入一个数字N(1输出:对应每个测试案例,依次打印从1到

2013-12-17 02:56:38 1830

原创 1514:数值的整数次方 @jobdu

题目1514:数值的整数次方时间限制:1 秒内存限制:128 兆特殊判题:否提交:377解决:103题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,表示

2013-12-17 02:06:20 1531

原创 1513:二进制中1的个数 @jobdu

题目1513:二进制中1的个数时间限制:1 秒内存限制:128 兆特殊判题:否提交:1341解决:455题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个

2013-12-17 01:25:24 1591

原创 Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode

超级难的一道题,线性时间复杂度好做,就是merge。但是对数复杂度,就要用到很多数学分析,实际上就是要找到第k小的元素。翻遍了网络,觉得还是这一篇讲的最详细,而且写得代码最容易转为Java,因为Java无法像C++一样把数组名作为指针,进而操作。http://nriverwang.blogspot.com/2013/04/k-th-smallest-element-of-two-sor

2013-12-16 13:52:04 5371

原创 Restore IP Addresses 还原IP地址@LeetCode

DFS算法的练习,现在逐渐对这类题有感觉了!在parseInt时用到的一个小技巧是:int val = Integer.parseInt(s); if(!String.valueOf(val).equals(s)){ // 防止解析成00.01.010.0类似的情况 return false; }package Level3;import j

2013-12-16 11:49:24 1823 6

原创 First Missing Positive 找第一个没在array中出现的正数@LeetCode

这道题可能会有歧义,意思是要找出第一个没在array中出现的正数!核心思想是利用数组下标来作为hash值,通过swap把元素移到应该在的位置,然后遍历数组,找到第一个错位的元素。主要参考了:http://n00tc0d3r.blogspot.com/2013/03/find-first-missing-positive.htmlhttp://www.cnblogs.co

2013-12-16 10:15:52 2520

原创 Distinct Subsequences 在S中找T包含的所有字符的组合数@LeetCode

动态规划。不会做,参考了http://leetcodesolution.blogspot.com/2013/09/distinct-subsequences.htmlhttp://blog.csdn.net/abcbc/article/details/8978146特别是第一篇:Analysis:If S[0] = T[0], then

2013-12-16 07:15:27 4642 1

原创 Unique Binary Search Trees II 输出二叉树的所有组合@LeetCode

总结一点,要求出所有组合的问题,一般用dfs;如果要求总数,用dp。另外,这道题的思路就是对1..n中的每一个数都依次让它做root,然后分出左右区间,再递归求解。最后把左右区间求得的子结果依次分别作为root的左右孩子,因此总共要3次循环。还有值得注意的技巧是,当begin>end时,要往ret AL里面添加null,使得每个AL里面至少有一个元素(null)。这样可以避免判断只有左区间

2013-12-16 05:28:40 6974

原创 1390:矩形覆盖 @jobdu

题目1390:矩形覆盖时间限制:1 秒内存限制:32 兆特殊判题:否提交:696解决:443题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1输出:对应每个测试案例,

2013-12-16 03:30:29 1670

原创 1389:变态跳台阶 @jobdu

题目1389:变态跳台阶时间限制:1 秒内存限制:32 兆特殊判题:否提交:916解决:559题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1输出:对应每个测试案例,输出该青蛙跳上

2013-12-16 03:16:43 1069

原创 1388:跳台阶 @jobdu

题目1388:跳台阶时间限制:1 秒内存限制:32 兆特殊判题:否提交:1598解决:641题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1输出:对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多

2013-12-16 03:08:11 1005

原创 1387:斐波那契数列 @jobdu

题目1387:斐波那契数列时间限制:1 秒内存限制:32 兆特殊判题:否提交:2816解决:827题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1输出:对应每个测试案例,输出第n项斐波

2013-12-16 02:57:46 1916

原创 1386:旋转数组的最小数字 @jobdu

题目1386:旋转数组的最小数字时间限制:1 秒内存限制:32 兆特殊判题:否提交:2738解决:613题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入:输入可能包含多

2013-12-16 02:43:28 1653

原创 Merge k Sorted Lists 合并k个有序链表@LeetCode

还是基于merge的思想package Level3;import java.util.ArrayList;import Utility.ListNode;/** * Merge k Sorted Lists * Merge k sorted linked lists and return it as one sorted list. Analyze and desc

2013-12-15 13:00:04 1804 2

原创 Reverse Linked List II 局部翻转链表@LeetCode

局部翻转,要点是:1 利用dummy节点2 记录4个关键位置:翻转区间前的最后一个未翻转节点 preBegin翻转区间,翻转后的第一个节点 reHead翻转区间,翻转后的最后一个节点 reverseEnd翻转区间后的第一个未翻转节点 postEnd3 利用3指针(reHead, preCur, cur)翻转链表package Level4;import

2013-12-15 12:23:24 1733

原创 Partition List 链表划分区间@LeetCode

简单的partition,用两个链表,3个指针。package Level4;import Utility.ListNode;/** * Partition List * * Given a linked list and a value x, partition it such that all nodes less than x come before nodes

2013-12-15 11:28:08 1375

空空如也

空空如也

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

TA关注的人

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