leetcode(数据结构类型分类)
根据题目的数据结构类型分类
practicePLUS
你的目标到底是什么
展开
-
leetcode 109 将有序链表转为二叉搜索树
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 这道题是要求把有序链表转为二叉搜索树,和之前那道Convert Sorted Array to Binary Search Tree 将有序数组转为二叉搜索树思路完全一样,只不过是...转载 2018-07-08 20:29:04 · 275 阅读 · 0 评论 -
返回 119. 编辑距离
描述给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:插入一个字符删除一个字符替换一个字符您在真实的面试中是否遇到过这个题? 是样例给出 work1="mart" 和 work2="karma"返回 3分析:状态值D[i][j]表示,将word1的前i个字符转化为word2的前j个字符需要的最少步骤数 本题是典型的适合使用动态规划的题目。...转载 2018-07-04 20:20:59 · 298 阅读 · 0 评论 -
94. 二叉树中的最大路径和(动态规划)
描述给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)您在真实的面试中是否遇到过这个题? 是样例给出一棵二叉树: 1 / \ 2 3返回 6这道求二叉树的最大路径和是一道蛮有难度的题,难就难在起始位置和结束位置可以为任意位置,我当然是又不会了,于是上网看看大神们的解法,像这种类似数的遍...转载 2018-07-04 23:09:10 · 2241 阅读 · 0 评论 -
139. 最接近零的子数组和
描述给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最右一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置您在真实的面试中是否遇到过这个题? 是样例给出[-3, 1, 1, -3, 5],返回[0, 2],[1, 3], [1, 1], [2, 2] 或者 [0, 4]。挑战O(nlogn)的时间复杂度分析:此题是子数组和为零的变形题,由于...原创 2018-07-17 17:00:41 · 524 阅读 · 0 评论 -
74. 第一个错误的代码版本
描述代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。请阅读上述代码,对于不同的语言获取正确的调用 isBadVersion 的方法,比如java的调用...原创 2018-07-17 21:53:06 · 175 阅读 · 0 评论 -
136. 分割回文串(DFS)
描述给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回s所有可能的回文串分割方案。您在真实的面试中是否遇到过这个题? 是样例给出 s = "aab",返回[ ["aa", "b"], ["a", "a", "b"]]分析:因为这道题需要遍历所有的字符,所以可以用DFS求解,既然题目要求找到所有可能拆分成回文数的情况,那么肯定是所有的情况都要遍历到,对于每一个子字符转载 2018-07-05 15:43:01 · 433 阅读 · 0 评论 -
15. 全排列(DFS)
描述给定一个数字列表,返回其所有可能的排列。你可以假设没有重复数字。您在真实的面试中是否遇到过这个题? 是样例给出一个列表[1,2,3],其全排列为:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路:利用DFS的思想,先完全遍历,然后回溯代码:class Solution {public: /*...转载 2018-07-05 16:58:05 · 1407 阅读 · 0 评论 -
leetcode 96 独一无二的二叉搜索树
Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \ / ...转载 2018-07-08 21:18:29 · 194 阅读 · 0 评论 -
lintcode 86 二叉查找树迭代器
描述设计实现一个带有下列属性的二叉查找树的迭代器:元素按照递增的顺序被访问(比如中序遍历)next()和hasNext()的询问操作要求均摊时间复杂度是O(1)您在真实的面试中是否遇到过这个题? 是样例对于下列二叉查找树,使用迭代器进行中序遍历的结果为 [1, 6, 10, 11, 12] 10 / \1 11 \ \ 6 12挑战额外空间复...转载 2018-07-08 21:48:00 · 171 阅读 · 0 评论 -
剑指offer lintcode50. 数组剔除元素后的乘积
描述给定一个整数数组A。定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。您在真实的面试中是否遇到过这个题? 是样例给出A=[1, 2, 3],返回 B为[6, 3, 2]分析:刚开始没看明白题目的意思,崩溃!!!原来题目的意思是,B[i]的值等于除了它之外的其余数的乘积思路:计算每...转载 2018-07-16 19:52:15 · 154 阅读 · 0 评论 -
28. 搜索二维矩阵
描述写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:每行中的整数从左到右是排序的。 每行的第一个数大于上一行的最后一个整数。您在真实的面试中是否遇到过这个题? 是样例考虑下列矩阵:[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]给出 target = 3,返回 true...原创 2018-07-16 20:56:20 · 111 阅读 · 0 评论 -
类似剑指offer 面试题 4 38. 搜索二维矩阵 II
描述写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。 您在真实的面试中是否遇到过这个题? 是样例考虑下列矩阵:[ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 1...原创 2018-07-16 21:15:46 · 490 阅读 · 0 评论 -
141. x的平方根
描述实现 int sqrt(int x) 函数,计算并返回 x 的平方根。您在真实的面试中是否遇到过这个题? 是样例sqrt(3) = 1sqrt(4) = 2sqrt(5) = 2sqrt(10) = 3挑战O(log(x))思想:利用二分查找,寻找最后一个不大于x的值代码:class Solution {public: /** ...转载 2018-07-16 21:58:35 · 587 阅读 · 0 评论 -
118 不同的子序列(动态规划)与 77 最长公共子序列类似
给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响。(比如,“ACE”是“ABCDE”的子序列字符串,而“AEC”不是)。 样例给出S = "rabbbit", T = "rabbit"返回 3分析:一般来说,如果题目里面给出两个字符串,基本是两种思路,一种就是递归判断,一种就是动态规划...转载 2018-07-03 23:07:26 · 368 阅读 · 0 评论 -
152. 组合(DFS)
描述Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.You don't need to care the order of combinations, but you should make sure the numbers in a combination are s...转载 2018-07-05 17:42:09 · 152 阅读 · 0 评论 -
33. N皇后问题(DFS)
描述n皇后问题是将n个皇后放置在n*n的棋盘上,皇后不能处在同一行、同一列、或同一斜线上,才能保证皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。您在真实的面试中是否遇到过这个题? 是样例对于4皇后问题存在两种解决的方案:[ [".Q..", // Solution 1 ...转载 2018-07-05 20:23:53 · 190 阅读 · 0 评论 -
16. 带重复元素的排列(DFS)
描述给出一个具有重复数字的列表,找出列表所有不同的排列。您在真实的面试中是否遇到过这个题? 是样例给出列表 [1,2,2],不同的排列有:[ [1,2,2], [2,1,2], [2,2,1]] 分析:全排列问题,一般都用DFS这道题是之前那道 Permutations 全排列的延伸,由于输入数组有可能出现重复数字,如果按照之前的算法运算,会有重复排列产生,我们要避免重复的产生,在...转载 2018-07-05 22:08:31 · 763 阅读 · 0 评论 -
49. 字符大小写排序
描述给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。您在真实的面试中是否遇到过这个题? 是样例给出"abAcD",一个可能的答案为"acbAD"挑战在原地扫描一遍完成思路:双指针代码: class Solution {public: /* * ...原创 2018-07-19 19:34:05 · 293 阅读 · 0 评论 -
143. 排颜色 II
描述给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序。You are not suppose to use the library's sort function for this problem.k <= n您在真实的面试中是否遇到过这个题? 是样例给出colors=[3...转载 2018-07-19 20:16:49 · 301 阅读 · 0 评论 -
leetcode 三数之和比target小的数组的个数
Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 <= i < j < k < n that satisfy the condition nums[i] + nums[j] + nums[k] < target.For exa...转载 2018-07-13 21:54:41 · 587 阅读 · 0 评论 -
lintcode 128. 哈希函数
描述在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH...转载 2018-07-13 22:28:11 · 176 阅读 · 0 评论 -
lintcode 129. 重哈希
描述哈希表容量的大小在一开始是不确定的。如果哈希表存储的元素太多(如超过容量的十分之一),我们应该将哈希表容量扩大一倍,并将所有的哈希值重新安排。假设你有如下一哈希表:size=3, capacity=4[null, 21, 14, null] ↓ ↓ 9 null ↓ null哈希函数为:int hashcode(int key,...转载 2018-07-14 17:28:36 · 140 阅读 · 0 评论 -
30. 插入区间
描述Given a non-overlapping interval list which is sorted by start point.Insert a new interval into it, make sure the list is still in order and non-overlapping (merge intervals if necessary).您在真实...转载 2018-07-19 21:23:58 · 159 阅读 · 0 评论 -
156. 合并区间
描述给出若干闭合区间,合并所有重叠的部分。您在真实的面试中是否遇到过这个题? 是样例Given intervals => merged intervals:[ [ (1, 3), (1, 6), (2, 6), => (8, 10), (8, 10), ...转载 2018-07-19 22:48:20 · 220 阅读 · 0 评论 -
lintcode 138. 子数组之和
描述给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置There is at least one subarray that it's sum equals to zero.您在真实的面试中是否遇到过这个题? 是样例给出 [-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].分析:利用map<int>s存储从位置0开始到当前...原创 2018-07-14 18:08:04 · 244 阅读 · 0 评论 -
17 子集(递归)
描述给定一个含不同整数的集合,返回其所有的子集子集中的元素排列必须是非降序的,解集必须不包含重复的子集您在真实的面试中是否遇到过这个题? 是样例如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]挑战你可以同时用递归与非递归的方式解决么?...转载 2018-07-21 15:46:18 · 472 阅读 · 0 评论 -
51 上一个排列、下一个排列
给定一个整数数组来表示排列,找出其上一个排列。样例给出排列[1,3,2,3],其上一个排列是[1,2,3,3]给出排列[1,2,3,4],其上一个排列是[4,3,2,1] 思路:1、上一个排列就是所有全排列按照升序排列后的上一个排列2、如数字排列63624578,其上一个排列为63587642由于是在所有升序排列中找到上一个排列,所以对于某一个排列,我们假设从某一位开始,后面...原创 2018-08-20 18:08:31 · 1025 阅读 · 0 评论 -
5. 第k大元素
描述在数组中找到第k大的元素你可以交换数组中的元素的位置您在真实的面试中是否遇到过这个题? 是样例给出数组 [9,3,2,4,8],第三大的元素是 4给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推挑战要求时间复杂度为O(n),空间复杂度为O(1)分析:1、可以使用快排,但不符合时间复杂度要求2、使...原创 2018-07-19 17:41:09 · 234 阅读 · 0 评论 -
9. Fizz Buzz 问题
描述给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.您在真实的面试中是否遇到过这个题? 是样例比如 n = 15, 返回一个字符串数组:[ "1", "2", "fizz", "4", "buzz", "fizz", "7", &原创 2018-07-07 22:31:06 · 590 阅读 · 0 评论 -
90. k数和 II
描述Given n unique integers, number k (1<=k<=n) and target.Find all possible k integers where their sum is target.您在真实的面试中是否遇到过这个题? 是样例给出[1,2,3,4],k=2, target=5,返回 [[1,4],[2,3]]思路:DFS,递归代码:class ...转载 2018-07-06 14:53:10 · 287 阅读 · 0 评论 -
2. 尾部的零
原文链接:http://www.lintcode.com/zh-cn/problem/trailing-zeros/描述: 设计一个算法,计算出n阶乘中尾部零的个数样例: 11! = 39916800,因此应该返回 22、分析假如你把1 × 2 ×3× 4 ×……×N中每一个因数分解质因数,结果就像: 1 × 2 × 3 × (2 × 2) × 5 × (2 × 3) × 7 × (2 × 2 ×...转载 2018-07-06 16:46:52 · 111 阅读 · 0 评论 -
135. 数字组合(DFS)
描述给出一个候选数字的set(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7],[2,2,3]所有的数字(包括目标数字)均为正整数。 元素组合(a1, a2, … , ak)必须是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。 解集不能包含重复的组合。 ...转载 2018-07-19 13:15:15 · 777 阅读 · 0 评论 -
153. 数字组合 II(DFS)
描述给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。所有的数字(包括目标数字)均为正整数。 元素组合(a1, a2, … , ak)必须是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。 解集不能包含重复的组合。 您在真实的面试中是否遇到过这个题? 是样例给出一个例子,候选数字集合为[10,1,6,...转载 2018-07-19 13:33:14 · 284 阅读 · 0 评论 -
127 拓扑排序
GraphFor example:{1,2,4#2,1,4#3,5#4,1,2#5,3} represents follow graph:1------2 3 \ | | \ | | \ | | \ | | 4 5we use # to split each node information.1,2,4 rep...转载 2018-07-19 15:16:33 · 143 阅读 · 0 评论 -
剑指offer 55. lintcode 96 二叉树的最大深度、最小深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到叶子节点的最远距离。 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.递归算法: 理解:从另一个角度理解树的深度,如果一颗树只有一个节点,那么他的深度为1,如果根结点只有 左子树而没有右子树,那么树的深度应该是其左子树的深度加1,同样如果根结点只有 右子...原创 2018-05-29 15:21:24 · 114 阅读 · 0 评论 -
剑指offer55 lintcode 93 平衡二叉树
描述给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 样例给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}A) 3 B) 3 / \ \ 9 20 ...原创 2018-07-07 19:10:32 · 124 阅读 · 0 评论 -
lintcode 32 最小子串覆盖
描述给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。如果在source中没有这样的子串,返回"",如果有多个这样的子串,返回起始位置最小的子串。说明在答案的子串中的字母在目标字符串中是否需要具有相同的顺序?——不需要。样例给出source = "ADOBECODEBANC",target = "ABC" 满足要求的解 "BANC"挑...转载 2018-07-13 19:38:15 · 1027 阅读 · 0 评论 -
37. 反转一个3位整数
描述反转一个只有3位数的整数。你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000。您在真实的面试中是否遇到过这个题? 是样例123 反转之后是 321。900 反转之后是 9。代码:class Solution {public: /** * @param number: A 3-digit number. * @return: Rever...原创 2018-07-07 21:48:34 · 347 阅读 · 0 评论 -
147 水仙花数
水仙花数是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数。代码:#inclu...原创 2018-07-07 21:56:13 · 559 阅读 · 0 评论 -
leetcode 100 same tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value.class Solution {...原创 2018-07-08 19:54:50 · 100 阅读 · 0 评论