自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 513.Perfect Squares-完美平方(中等题)

完美平方 题目给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, … )使得他们的和等于 n。你需要让平方数的个数最少。样例给出 n = 12, 返回 3 因为 12 = 4 + 4 + 4。 给出 n = 13, 返回 2 因为 13 = 4 + 9。题解所有的数都可以看做一个非平方数加上一个平方数。从小到大计算dp[n]=a+b*b,递推公式为dp[a + b * b] =

2016-11-29 12:21:22 463

原创 512.Decode Ways-解码方法(中等题)

解码方法 题目有一个消息包含A-Z通过以下规则编码 ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 现在给你一个加密过后的消息,问有几种解码的方式样例给你的消息为12,有两种方式解码 AB(12) 或者 L(12). 所以返回 2题解本题和爬梯子问题非常类似,除了在0的处理上需要注意,比如0不可以单独存在,也不可以作为十位数进行组合。构件dp数组,对字符串进行遍历,如果

2016-11-28 11:36:23 815

原创 534.House Robber II-打劫房屋 II(中等题)

打劫房屋 II 题目在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,你最多可以得到多少钱 在不触动

2016-11-21 23:04:07 493

原创 532.Reverse Pairs-逆序对(中等题)

逆序对 题目在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。 概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。样例序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。题解本题在归并排序的基础上进行修改就可以了,

2016-11-21 11:31:26 410

原创 528.Flatten Nested List Iterator-摊平嵌套的列表(中等题)

摊平嵌套的列表 题目给你一个嵌套的列表,实现一个迭代器将其摊平。 一个列表的每个元素可能是整数或者一个列表。样例给出列表 [[1,1],2,[1,1]],经过迭代器之后返回 [1,1,2,1,1]。 给出列表 [1,[4,[6]]],经过迭代器之后返回 [1,4,6]。题解对嵌套的列表进行遍历,如果元素是整数则直接加入结果列表中,是列表则递归遍历。/** * // This is th

2016-11-19 13:58:00 601

原创 477.Surrounded Regions-被围绕的区域(中等题)

被围绕的区域 题目给一个二维的矩阵,包含 ‘X’ 和 ‘O’, 找到所有被 ‘X’ 围绕的区域,并用 ‘X’ 填充满。样例给出二维矩阵: 把被 ‘X’ 围绕的区域填充之后变为: 题解public class Solution { private static Queue<Integer> queue = null; private static char[][] boar

2016-11-19 13:45:28 443

原创 436.Maximal Square-最大正方形(中等题)

最大正方形 题目在一个二维01矩阵中找到全为1的最大正方形样例1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4题解定义相同大小的辅助数组res,且第一例和第一行元素与原数组相同。从res[1][1]开始,如果原数组matrix[i][j]为0则表示当前点不存在正方形,即边长为0。如果matrix[i][j]为1则表示至少存在边长为1的正方形,此时

2016-11-19 13:25:18 331

原创 511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)

交换链表当中两个节点 题目给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。注意事项 你需要交换两个节点而不是改变节点的权值样例给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4 返回结果 1->4->3->2->null。题解基本的链表题,需注意两个节点相邻的问题

2016-11-19 12:29:00 483

原创 507.Wiggle Sort II-摆动排序 II(中等题)

摆动排序 II 题目给你一个数组nums,将它重排列如下形式 nums[0] < nums[1] > nums[2] < nums[3]….注意事项 你可以认为每个输入都有合法解样例给出 nums = [1, 5, 1, 1, 6, 4],一种方案为 [1, 4, 1, 5, 1, 6]. 给出 nums = [1, 3, 2, 2, 3, 1],一种方案为 [2, 3, 1, 3, 1,

2016-11-19 12:13:31 436

原创 508.Wiggle Sort-摆动排序(中等题)

摆动排序 题目给你一个没有排序的数组,请将原数组就地重新排列满足如下性质 nums[0] <= nums[1] >= nums[2] <= nums[3]….注意事项 请就地排序数组,也就是不需要额外数组样例给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]题解从i=1开始遍历数组,如果是奇数位则应该是nums[i]>=n

2016-11-19 09:36:16 535

原创 473.Add and Search Word-单词的添加与查找(中等题)

单词的添加与查找 题目设计一个包含下面两个操作的数据结构:addWord(word), search(word) addWord(word)会在数据结构中添加一个单词。而search(word)则支持普通的单词查询或是只包含.和a-z的简易正则表达式的查询。 一个 . 可以代表一个任何的字母。注意事项 你可以假设所有的单词都只包含小写字母 a-z。样例addWord(“bad”) add

2016-11-19 00:00:07 868

原创 442.Implement Trie-实现 Trie(中等题)

实现 Trie 题目实现一个 Trie,包含 insert, search, 和 startsWith 这三个方法。注意事项 你可以假设所有的输入都是小写字母a-z。样例insert(“lintcode”) search(“code”) // return false startsWith(“lint”) // return true startsWith(“linterror”) //

2016-11-18 23:18:55 520

原创 439.Segment Tree Build II-线段树的构造 II(中等题)

线段树的构造 II 题目线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:根节点的 start 和 end 由 build 方法所给出。 对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。 对于节点 A 的右儿子,有 start=(A.l

2016-11-18 11:00:56 437

原创 426.Restore IP Addresses-恢复IP地址(中等题)

恢复IP地址 题目给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。样例给出字符串 “25525511135”,所有可能的IP地址为: [ “255.255.11.135”, “255.255.111.35” ] (顺序无关紧要)题解Last Update 2016.11.17

2016-11-18 10:36:40 729

原创 428.Pow(x, n)-x的n次幂(中等题)

x的n次幂 题目实现 pow(x,n)注意事项 不用担心精度,当答案和标准输出差绝对值小于1e-3时都算正确样例Pow(2.1, 3) = 9.261 Pow(0, 1) = 0 Pow(1, 0) = 1题解用分治法优化累计相乘的过程。public class Solution { /** * @param x the base number * @par

2016-11-17 23:26:10 700

原创 427.Generate Parentheses-生成括号(中等题)

生成括号 题目给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例给定 n = 3, 可生成的组合如下: “((()))”, “(()())”, “(())()”, “()(())”, “()()()”题解本题还是用回溯法来解,由于字符串只有左括号和右括号两种字符,且左括号的个数必等于右括号的个数。 1.定义两个变量left和right分别表示当前剩余左右括号的个

2016-11-17 22:22:02 551

原创 425.Letter Combinations of a Phone Number-电话号码的字母组合(中等题)

电话号码的字母组合 题目给一个不包含01的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。 下图的手机按键图,就表示了每个数字可以代表的字母。 注意事项 以上的答案是按照词典编撰顺序进行输出的,不过,在做本题时,你也可以任意选择你喜欢的输出顺序。样例给定 “23” 返回 [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf

2016-11-17 20:36:02 603

原创 424.Evaluate Reverse Polish Notation-逆波兰表达式求值(中等题)

逆波兰表达式求值 题目求逆波兰表达式的值。 在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。说明什么是逆波兰表达式? http://en.wikipedia.org/wiki/Reverse_Polish_notation样例[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9 [

2016-11-17 20:31:03 335

原创 421.Simplify Path-简化路径(中等题)

简化路径 题目给定一个文档(Unix-style)的完全路径,请进行路径简化。样例“/home/”, => “/home” “/a/./b/../../c/”, => “/c”挑战你是否考虑了 路径 = “/../” 的情况? 在这种情况下,你需返回”/”。 此外,路径中也可能包含双斜杠’/’,如 “/home//foo/”。 在这种情况下,可忽略多余的斜杠,返回 “/home/foo

2016-11-17 20:27:26 673

原创 419.Roman to Integer-罗马数字转整数(中等题)

罗马数字转整数 题目给定一个罗马数字,将其转换成整数。 返回的结果要求在1到3999的范围内。说明什么是 罗马数字? https://en.wikipedia.org/wiki/Roman_numerals https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97 http://baike.baidu.com/v

2016-11-17 13:09:49 444

原创 418.Integer to Roman-整数转罗马数字(中等题)

整数转罗马数字 题目给定一个整数,将其转换成罗马数字。 返回的结果要求在1-3999的范围内。说明什么是 罗马数字? https://en.wikipedia.org/wiki/Roman_numerals https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97 http://baike.baidu.com/v

2016-11-17 11:49:20 434

原创 414.Divide Two Integers-两个整数相除(中等题)

两个整数相除 题目将两个整数相除,要求不使用乘法、除法和 mod 运算符。 如果溢出,返回 2147483647 。样例给定被除数 = 100 ,除数 = 9,返回 11。题解不能用乘除法则用减法和位操作代替,注意处理溢出问题,用倍增减法优化时间复杂度。while(d1 >= temp) { d1-=temp; ret+=cnt; cnt = cnt

2016-11-17 00:33:23 358

原创 405.Submatrix Sum-和为零的子矩阵(中等题)

和为零的子矩阵 题目给定一个整数矩阵,请找出一个子矩阵,使得其数字之和等于0.输出答案时,请返回左上数字和右下数字的坐标。样例给定矩阵 返回 [(1,1), (2,2)]挑战O(n^3) 时间复杂度。题解public class Solution { /** * @param matrix an integer matrix * @return the c

2016-11-17 00:02:25 1053

原创 402.Continuous Subarray Sum-连续子数组求和(中等题)

连续子数组求和 题目给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)样例给定 [-3, 1, 3, -3, 4], 返回[1,4].题解当前子数组和sum如果小于0丢弃并以当前元素A[i]为sum,大于0则继续累加A[i],每次与A[i]运算完后与之前的sum进行比较,当前的sum大则

2016-11-16 12:33:06 834

原创 401.Kth Smallest Number in Sorted Matrix-排序矩阵中的从小到大第k个数(中等题)

排序矩阵中的从小到大第k个数 题目在一个排序矩阵中找从小到大的第 k 个整数。 排序矩阵的定义为:每一行递增,每一列也递增。样例给出 k = 4 和一个排序矩阵: 挑战使用O(k log n)的方法,n为矩阵的宽度和高度中的最大值。题解使用优先队列进行最小堆排序,每次选取最小的元素,第K次选择的就是第K大元素。public class Solution { class Pair

2016-11-15 22:47:42 1094

原创 399.Nuts & Bolts Problem-Nuts 和 Bolts 的问题(中等题)

Nuts 和 Bolts 的问题 题目给定一组 n 个不同大小的 nuts 和 n 个不同大小的 bolts。nuts 和 bolts 一一匹配。 不允许将 nut 之间互相比较,也不允许将 bolt 之间互相比较。也就是说,只许将 nut 与 bolt 进行比较, 或将 bolt 与 nut 进行比较。请比较 nut 与 bolt 的大小。样例给出 nuts=[‘ab’,’bc’,’dd’,’

2016-11-14 00:21:06 902

原创 406.Minimum Size Subarray Sum-和大于S的最小子数组(中等题)

和大于S的最小子数组 题目给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。样例给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。挑战如果你已经完成了O(n)时间复杂度的编程,请再试试 O(n log n)时间复杂度。题解前后双指针遍历,如果子数组[i,j]的和大

2016-11-14 00:00:49 316

原创 395.Coins in a Line II-硬币排成线 II(中等题)

硬币排成线 II 题目有 n 个不同价值的硬币排成一条线。两个参赛者轮流从左边依次拿走 1 或 2 个硬币,直到没有硬币为止。计算两个人分别拿到的硬币总价值,价值高的人获胜。请判定 第一个玩家 是输还是赢?样例给定数组 A = [1,2,2], 返回 true. 给定数组 A = [1,2,4], 返回 false.题解1.若第一个玩家取values[i],则对方可以取values[i+1]

2016-11-13 23:45:33 483

原创 394.Coins in a Line-硬币排成线(中等题)

硬币排成线 题目有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人获胜。请判定 第一个玩家 是输还是赢?样例n = 1, 返回 true. n = 2, 返回 true. n = 3, 返回 false. n = 4, 返回 true. n = 5, 返回 true.挑战O(1) 时间复杂度且O(1) 存储。题解从博弈论

2016-11-13 12:21:28 412

原创 392.House Robber-打劫房屋(中等题)

打劫房屋 题目假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,你最多可以得到多少钱 在不触动报警装置的情况下。样例给定 [3, 8, 4], 返回 8.挑战O(n) 时间复杂度 且

2016-11-13 12:11:25 668

原创 391.Number of Airplanes in the Sky-数飞机(中等题)

数飞机 题目给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?注意事项 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。样例对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], 返回3。题解对起降时间列表进行遍历,用HashMap记录每个start和end的数量,start加1,end减1。然后对Hash

2016-11-13 11:39:25 512

原创 381.Spiral Matrix II-螺旋矩阵 II(中等题)

螺旋矩阵 II 题目给你一个数n生成一个包含1-n^2的螺旋形矩阵样例n = 3 矩阵为 题解参看374.Spiral Matrix-螺旋矩阵(中等题)public class Solution { /** * @param n an integer * @return a square matrix */ public int[][] gene

2016-11-13 01:16:53 308

原创 388.Permutation Sequence-第k个排列(中等题)

第k个排列 题目给定 n 和 k,求123..n组成的排列中的第 k 个排列。注意事项 1 ≤ n ≤ 9样例对于 n = 3, 所有的排列如下: 123 132 213 231 312 321 如果 k = 4, 第4个排列为,231.题解简单的字典排序。class Solution { /** * @param n: n * @param

2016-11-13 00:48:54 404

原创 383.Container With Most Water-装最多水的容器(中等题)

装最多水的容器 题目给定 n 个非负整数 a1, a2, …, an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。注意事项 容器不可倾斜。样例给出[1,3,2], 最大的储水面积是2.题解参看363.Trapping Rain Water-接雨水(中等

2016-11-13 00:39:35 295

原创 387.The Smallest Difference-最小差(中等题)

最小差 题目给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。样例给定数组 A = [3,4,6,7], B = [2,3,8,9],返回 0。挑战时间复杂度 O(n log n)题解public class Solution { /**

2016-11-13 00:34:16 259

原创 384.Longest Substring Without Repeating Characters-最长无重复字符的子串(中等题)

最长无重复字符的子串 题目给定一个字符串,请找出其中无重复字符的最长子字符串。样例例如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3。 对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。挑战O(n) 时间题解用哈希表辅助解题。public class Solution { /** * @param s: a strin

2016-11-13 00:29:09 268

原创 374.Spiral Matrix-螺旋矩阵(中等题)

合并排序数组 II 题目给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。样例给定如下矩阵: 应返回 [1,2,3,6,9,8,7,4,5]。题解public class Solution { /** * @param matrix a matrix of m x n elements * @return a

2016-11-11 16:57:58 363

原创 380.Intersection of Two Linked Lists-两个链表的交叉(中等题)

两个链表的交叉 题目请写一个程序,找到两个单链表最开始的交叉节点。注意事项 如果两个链表没有交叉,返回null。 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。样例下列两个链表: 在节点 c1 开始交叉。挑战需满足 O(n) 时间复杂度,且仅用 O(1) 内存。题解如样例,对A,B进行遍历得到A的节点数为5,B的节点数为6,则先将B向后移动1个节点,则

2016-11-11 15:40:25 242

原创 379.Reorder array to construct the minimum number-将数组重新排序以构造最小值(中等题)

将数组重新排序以构造最小值 题目给定一个整数数组,请将其重新排序,以构造最小值。样例给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字: 3+32+321=332321 3+321+32=332132 32+3+321=323321 32+321+3=323213 321+3+32=321332 321+32+3=321323 其中,最小值为 321323

2016-11-11 14:25:31 490

原创 371.Print Numbers by Recursion-用递归打印数字(中等题)

用递归打印数字 题目用递归的方法找到从1到最大的N位整数。注意事项 用下面这种方式去递归其实很容易:recursion(i) { if i > largest number: return results.add(i) recursion(i + 1)}样例给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[

2016-11-08 23:34:07 401

空空如也

空空如也

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

TA关注的人

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