自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 61.Search for a Range-搜索区间(中等题)

搜索区间 题目给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。 如果目标值不在数组中,则返回[-1, -1]样例给出[5, 7, 7, 8, 8, 10]和目标值target=8, 返回[3, 4]挑战时间复杂度 O(log n)题解1.二分法找到target,再向两边查找边界。public class Solution { /**

2016-09-30 18:13:51 246

原创 59.3Sum Closest-最接近的三数之和(中等题)

最接近的三数之和 题目给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。注意事项 只需要返回三元组之和,无需返回三元组本身样例例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元组是 -1 + 2 + 1 = 2.挑战O(n^2) 时间, O(1) 额外空间。题解排序后遍历去三个元素之和,取最

2016-09-30 13:03:49 503 1

原创 58.4Sum-四数之和(中等题)

四数之和 题目给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。注意事项 四元组(a, b, c, d)中,需要满足a <= b <= c <= d 答案中不可以包含重复的四元组。样例例如,对于给定的整数数组S=[1, 0, -1, 0, -2, 2] 和 target=0. 满足要求的四元组集合为: (-1, 0, 0, 1) (

2016-09-30 12:41:54 337

原创 57.3Sum-三数之和(中等题)

三数之和 题目给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。注意事项 在三元组(a, b, c),要求a <= b <= c。 结果不能包含重复的三元组。样例如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是: (-1, 0, 1) (-1, -1, 2)题解先对数组排序,再进行遍历(注意跳过重复元

2016-09-30 11:29:12 306

原创 56.Two Sum-两数之和(中等题)

两数之和 题目给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。注意事项 你可以假设只有一组答案。样例给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].题解本题是要求找出数组中一对

2016-09-30 10:01:56 303

原创 47.Majority number III-主元素 III(中等题)

主元素 III 题目给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。注意事项 数组中只有唯一的主元素说明给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3挑战要求时间复杂度为O(n),空间复杂度为O(k)题解沿用前两题的思路,对不同的K个数进行消除,这里选用HashMap对Candidates进行处理。在遍历过程中如有K个不同的

2016-09-30 00:57:09 510

原创 47.Majority number II-主元素 II(中等题)

主元素 II 题目给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。注意事项 数组中只有唯一的主元素样例给出数组[1,2,1,2,1,3,3] 返回 1挑战要求时间复杂度为O(n),空间复杂度为O(1)。题解思路和46.Majority Number-主元素(容易题)的一致,如果发现3个不一样的数就进行消掉。记录两个candidate和每个candidat

2016-09-30 00:11:52 396

原创 45.Maximum Subarray Difference-最大子数组差(中等题)

最大子数组差 题目给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。 返回这个最大的差值。注意事项 子数组最少包含一个数样例给出数组[1, 2, -3, 1],返回 6挑战时间复杂度为O(n),空间复杂度为O(n)题解沿用42.Maximum Subarray II-最大子数组 II(中等题)的思路,求出左右子数组的最大值

2016-09-29 00:43:40 726

原创 42.Maximum Subarray II-最大子数组 II(中等题)

最大子数组 II 题目给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。 每个子数组的数字在数组中的位置应该是连续的。 返回最大的和。注意事项 子数组最少包含一个数样例给出数组 [1, 3, -1, 2, -1, 2] 这两个子数组分别为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2],它们的最大和都是 7挑战要求时间复杂度为 O(n)

2016-09-29 00:13:12 714

原创 52.Next Permutation-下一个排列(中等题)

下一个排列 题目给定一个整数数组来表示排列,找出其之后的一个排列。注意事项 排列中可能包含重复的整数样例给出排列[1,3,2,3],其下一个排列是[1,3,3,2] 给出排列[4,3,2,1],其下一个排列是[1,2,3,4]题解解析参见15.Permutations-全排列(中等题)public class Solution { /** * @param nums:

2016-09-28 23:06:16 320

原创 51.Previous Permutation-上一个排列(中等题)

上一个排列 题目给定一个整数数组来表示排列,找出其上一个排列。注意事项 排列中可能包含重复的整数样例给出排列[1,3,2,3],其上一个排列是[1,2,3,3] 给出排列[1,2,3,4],其上一个排列是[4,3,2,1]题解a.对于排列a[1…n],查找所第一对a[i]>a[i+1],如没有找到则说明当前排列已不存在更小的字典排序。 b.找到a[i]之后最后一个小于a[i]的值a[

2016-09-28 23:02:55 438

原创 49.Sort Letters by Case-字符大小写排序(中等题)

字符大小写排序 题目给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。注意事项 小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。样例给出”abAcD”,一个可能的答案为”acbAD”挑战在原地扫描一遍完成题解public class Solution { /** *@param chars: The letter array you

2016-09-28 21:20:26 430

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

生成括号 题目给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例给定 n = 3, 可生成的组合如下: “((()))”, “(()())”, “(())()”, “()(())”, “()()()”题解本题和33.N-Queens-N皇后问题(中等题)类似,都是使用回溯法解决,约束条件为第1到2n个位置都满足左括号的个数≥右括号的个数。public class

2016-09-28 16:59:42 324

原创 34.N-Queens II-N皇后问题 II(中等题)

N皇后问题 II 题目根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。样例比如n=4,存在2种解决方案题解参看33.N-Queens-N皇后问题(中等题)class Solution { /** * Calculate the total number of distinct N-Queen solutions. * @param n: T

2016-09-27 01:35:58 441

原创 33.N-Queens-N皇后问题(中等题)

N皇后问题 题目n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。 每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例对于4皇后问题存在两种解决的方案:挑战你能否不使用递归完成? 题解1.递归法 a.在第i行的第j列放置一个皇后,然后判断是否合

2016-09-27 01:32:33 625

原创 40.Implement Queue by Two Stacks-用栈实现队列(中等题)

用栈实现队列 题目正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。 pop和top方法都应该返回第一个元素的值。样例比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2挑战仅使用两个栈来实现它,不使用任何其他数

2016-09-26 03:03:37 304

原创 36.Reverse Linked List II-翻转链表 II(中等题)

翻转链表 II 题目翻转链表中第m个节点到第n个节点的部分注意事项 m,n满足1 ≤ m ≤ n ≤ 链表长度样例给出链表1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null挑战在原地一次翻转完成题解1.Stack法 对于要翻转部分的节点,用Stack辅助进行翻转,然后再与首尾部分进行拼接。/** * Definition f

2016-09-26 02:43:11 232

原创 38.Search a 2D Matrix II-搜索二维矩阵 II(中等题)

翻转字符串 题目写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。说明样例考虑下列矩阵: 给出target = 3,返回 2挑战要求O(m+n) 时间复杂度和O(1) 额外空间题解采用分治法的思想,从矩阵右上角开始遍历, 如果matrix[

2016-09-26 01:56:32 306

原创 32.Minimum Window Substring-最小子串覆盖(中等题)

最小子串覆盖 题目给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。注意事项 如果在source中没有这样的子串,返回”“,如果有多个这样的子串,返回起始位置最小的子串。说明在答案的子串中的字母在目标字符串中是否需要具有相同的顺序? ——不需要。样例给出source = “ADOBECODEBANC”,target = “ABC

2016-09-26 00:49:10 1265

原创 29.Interleaving String-交叉字符串(中等题)

翻转字符串 题目给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。样例比如 s1 = “aabcc” s2 = “dbbca”当 s3 = “aadbbcbcac”,返回 true.当 s3 = “aadbbbaccc”, 返回 false.挑战要求时间复杂度为O(n^2)或者更好题解题意为取s1的前i个字符和s2的前j个字符,能否组成s3的前[i+j]个字符。需注意

2016-09-25 15:48:39 499

原创 18.Subsets II-带重复元素的子集(中等题)

带重复元素的子集 题目给定一个可能具有重复数字的列表,返回其所有可能的子集注意事项 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集样例如果 S = [1,2,2],一个可能的答案为: 挑战你可以同时用递归与非递归的方式解决么?题解本题与上一题17.Subsets-子集(中等题)区别就是需要进行剪枝操作。1.递归法 还是借用本题样例数据,我们先看一下

2016-09-24 22:23:20 467

原创 17.Subsets-子集(中等题)

子集 题目给定一个含不同整数的集合,返回其所有的子集注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集样例如果 S = [1,2,3],有如下的解: 挑战你可以同时用递归与非递归的方式解决么?题解1.递归法先对数组排序,然后回溯递归。下图是以样例画的很粗糙的递归堆栈图,对着代码推算一遍就明白了。 class Solution { /** * @param

2016-09-24 00:56:11 394

原创 501.Mini Twitter-迷你推特(中等题)

合并排序数组 II 题目实现一个迷你的推特,支持下列几种方法 1.postTweet(user_id, tweet_text). 发布一条推特. 2.getTimeline(user_id). 获得给定用户最新发布的十条推特,按照发布时间从最近的到之前排序 3.getNewsFeed(user_id). 获得给定用户的朋友或者他自己发布的最新十条推特,从发布时间最近到之前排序 4.foll

2016-09-23 11:38:25 1517

原创 411.Gray Code-格雷编码(中等题)

格雷编码 题目格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖所有的 2n 个整数。注意事项 对于给定的 n,其格雷编码顺序并不唯一。 根据以上定义, [0,2,3,1] 也是一个有效的格雷编码顺序。样例给定 n = 2, 返

2016-09-23 10:31:20 879

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

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

2016-09-23 09:55:50 286

原创 71.Binary Tree Zigzag Level Order Traversal-二叉树的锯齿形层次遍历(中等题)

二叉树的锯齿形层次遍历 题目给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例给出一棵二叉树 {3,9,20,#,#,15,7}, 返回其锯齿形的层次遍历为: 题解隔行对层序遍历结果进行反转。/** * Definition of TreeNode: * public class TreeNode { * public i

2016-09-22 11:41:55 350

原创 70.Binary Tree Level Order Traversal II-二叉树的层次遍历 II(中等题)

二叉树的层次遍历 II 题目给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例给出一棵二叉树 {3,9,20,#,#,15,7}, 按照从下往上的层次遍历为: 题解在上一题的基础上把每一层的节点列表先入栈,最后再转入列表,或者直接将结果反转。/** * Definition of TreeNode: * public c

2016-09-22 11:20:50 190

原创 69.Binary Tree Level Order Traversal-二叉树的层次遍历(中等题)

二叉树的层次遍历 题目给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 返回他的分层遍历结果: 挑战挑战1:只使用一个队列去实现它 挑战2:用DFS算法来做题解1.单队列实现 在对节点队列进行遍历时,要提前保存队列的长度n,而不要在循环中去动态获取。/** * Definition of TreeNode:

2016-09-22 11:06:18 325

原创 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)题解先把两个数组分别排序,再用指针i,j分别指向两个数组的第一个元素,

2016-09-22 00:11:13 419

原创 31.Partition Array-数组划分(中等题)

数组划分 题目给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。注意事项 你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.le

2016-09-21 15:55:12 522

原创 16.Permutations II-带重复元素的排列(中等题)

带重复元素的排列 题目给出一个具有重复数字的列表,找出列表所有不同的排列。样例给出列表 [1,2,2],不同的排列有: 挑战使用递归和非递归分别完成该题。题解1.递归解法class Solution { /** * @param nums: A list of integers. * @return: A list of unique permutations.

2016-09-21 14:40:46 391

原创 15.Permutations-全排列(中等题)

全排列 题目给定一个数字列表,返回其所有可能的排列。注意事项 你可以假设没有重复数字。样例给出一个列表[1,2,3],其全排列为: 挑战使用递归和非递归分别解决。题解1.递归解法 首先固定第一项,然后求后面所有项的全排列,代码中第一个swap函数意思是所有元素轮流放置在begin位置上,再调用permutation函数求已固定项后面所有全排列,再次调用swap函数将已交换位置的元素还原。

2016-09-21 00:55:07 653

原创 7.Binary Tree Serialization-二叉树的序列化和反序列化(中等题)

二叉树的序列化和反序列化 题目设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。样例给出一个测试数据样例, 二叉树{3,9,20,#,#,15,7},表示如下的树结构: 我们的数据是进

2016-09-20 22:46:34 507

原创 11.Search Range in Binary Search Tree-二叉查找树中搜索区间(中等题)

二叉查找树中搜索区间 题目给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。样例如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22].题解二叉查找树的中序遍历,可参考67.Binary

2016-09-20 14:46:28 601

原创 12.Min Stack-带最小值操作的栈(中等题)

带最小值操作的栈 题目实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。注意事项 如果堆栈中没有数字则不能进行min方法的调用样例如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1题解在维护一个基本栈的

2016-09-20 00:30:14 328

原创 5.Kth Largest Element-第k大元素(中等题)

第k大元素 题目在数组中找到第k大的元素注意事项 你可以交换数组中的元素的位置样例给出数组 [9,3,2,4,8],第三大的元素是 4 给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推挑战要求时间复杂度为O(n),空间复杂度为O(1)题解Last Update 2016.9.18

2016-09-20 00:23:20 387

原创 4.Ugly Number II-丑数 II(中等题)

丑数 II 题目设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…注意事项 我们可以认为1也是一个丑数样例如果n = 9, 返回 10挑战要求时间复杂度为O(nlogn)或者O(n)题解我们可以先回顾一下丑数的解法,用该数循环除以2,3,5,直至不能再除为止。那么本题我们是不是可以逆向思维一下,用2

2016-09-18 17:02:35 631

原创 3.Digit Counts-统计数字(中等题)

统计数字 题目计算数字k在0到n中的出现的次数,k可能是0~9的一个值样例例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)题解只想到了暴力枚举,如有更好的办法还望告知。class Solution { /* * param k : As description

2016-09-18 16:59:17 734

原创 548.Intersection of Two Arrays II-两数组的交 II(容易题)

两数组的交 II 题目计算两个数组的交注意事项 每个元素出现次数得和在数组里一样 答案可以以任意顺序给出样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].题解先对nums1遍历并将nums1[i]和nums1[i]出现次数存入HashMap,再对nums2进行遍历,如果任意nums2[i]在HashMap中存在且Value大于0则标记为相

2016-09-18 15:40:31 245

原创 547.Intersection of Two Arrays-两数组的交(容易题)

两数组的交 题目返回两个数组的交样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].挑战可以用三种不同的方法实现吗?题解1.暴力解法O(N^2),会超时 2.排序完后用双指针遍历O(NLogN) 3.HashMapO(N)public class Solution { /** * @param nums1 an integer

2016-09-18 12:52:49 315

空空如也

空空如也

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

TA关注的人

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