
lintcode
文章平均质量分 53
wen-yun-lei
代码的人生,自己来写
展开
-
lintcode--二叉树的中序遍历
题目::给出一棵二叉树,返回其中序遍历 1、递归法这是思路最简单的方法,容易想到并且容易实现。递归的终止条件是当前节点是否为空。首先递归调用遍历左子树,然后访问当前节点,最后递归调用右子树。代码如下:[cpp] view plain copy//recursive class Solution1 { public: vector inord原创 2017-07-12 09:41:43 · 197 阅读 · 0 评论 -
lintcode--最近公共祖先
题目:给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。最近公共祖先是两个节点的公共的祖先节点且具有最大深度。/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; *原创 2017-07-12 09:43:29 · 223 阅读 · 0 评论 -
lintcode --将二叉树拆成链表
题目:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。// version 2: Divide & Conquerpublic class Solution { public void flatten(TreeNode root) { helper(root);原创 2017-07-12 11:00:43 · 226 阅读 · 0 评论 -
lintcode--二叉树的后序遍历
给出一棵二叉树,返回其节点值的后序遍历。您在真实的面试中是否遇到过这个题? Yes样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]//Recursive递归public ArrayList postorderTraversal(TreeNode root) {原创 2017-07-13 09:17:27 · 221 阅读 · 0 评论 -
lintcode--二叉树的所有路径
给一棵二叉树,找出从根节点到叶子节点的所有路径。您在真实的面试中是否遇到过这个题? Yes样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]/** * Definition of TreeNode: * public class原创 2017-07-13 09:37:08 · 238 阅读 · 0 评论 -
lintcode--二叉树的层次遍历
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)您在真实的面试中是否遇到过这个题? Yes样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7],原创 2017-07-13 09:42:04 · 249 阅读 · 0 评论 -
lintcode--二叉树的锯齿形层次遍历
给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 您在真实的面试中是否遇到过这个题? Yes样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7返回其锯齿形的层次遍历为:[ [3], [20,9原创 2017-07-13 10:05:28 · 260 阅读 · 0 评论 -
lintcode -- 克隆二叉树
深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。您在真实的面试中是否遇到过这个题? Yes样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5public class Solut原创 2017-07-13 10:33:34 · 211 阅读 · 0 评论 -
lintcode -- 线段树的构造
线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:根节点的 start 和 end 由 build 方法所给出。对于节点 A 的左儿子,有start=A.left, end=(A.left + A.right) / 2。对于节点 A 的右儿子,有start=(A.left + A.right)原创 2017-07-14 08:27:16 · 219 阅读 · 0 评论 -
lintcode--二叉树的最大节点
在二叉树中寻找值最大的节点并返回。您在真实的面试中是否遇到过这个题? Yes样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。public class Solution { /** * @param root原创 2017-07-14 09:03:59 · 1010 阅读 · 0 评论 -
lintcode -- 带最小值操作的栈
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。 注意事项如果堆栈中没有数字则不能进行min方法的调用您在真实的面试中是否遇到过这个题? Yes样例如下操作:push(1),pop(),push(2),pu原创 2017-07-14 09:20:41 · 210 阅读 · 0 评论 -
lintcode--有效的括号序列
给定一个字符串所表示的括号序列,包含以下字符:'(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。您在真实的面试中是否遇到过这个题? Yes样例括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但"([)]"则是无效的括号。public class Solution原创 2017-07-14 09:35:35 · 346 阅读 · 0 评论 -
lintcode--逆波兰表达式求值
求逆波兰表达式的值。在逆波兰表达法中,其有效的运算符号包括 +, -, *,/ 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。您在真实的面试中是否遇到过这个题? Yes样例["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] -> (4 +原创 2017-07-14 09:45:43 · 364 阅读 · 0 评论 -
lintcode--两数之和
给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项你可以假设只有一组答案。您在真实的面试中是否遇到过这个题? Yes样例给出 numbers = [2原创 2017-07-15 09:23:55 · 263 阅读 · 0 评论 -
lintcode--链表求和
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。您在真实的面试中是否遇到过这个题? Yes样例给出两个链表 3->1->5->null 和 5->9->2->null,返回8->0->8->nullpublic cl原创 2017-07-15 09:38:38 · 219 阅读 · 0 评论 -
lintcode--翻转字符串
给定一个字符串,逐个翻转字符串中的每个单词。您在真实的面试中是否遇到过这个题? Yes说明单词的构成:无空格字母构成一个单词输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个/*思路: 先去掉空格并生成字符串数组,原创 2017-07-15 09:42:20 · 271 阅读 · 0 评论 -
lintcode--最长无重复字符的子串
给定一个字符串,请找出其中无重复字符的最长子字符串。您在真实的面试中是否遇到过这个题? Yes样例例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 3。对于,"bbbbb",其无重复字符的最长子字符串为"b",长度为1。public class Solution { /** 遍历原创 2017-07-15 09:56:37 · 289 阅读 · 0 评论 -
lintcode--乱序字符串
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。 注意事项所有的字符串都只包含小写字母您在真实的面试中是否遇到过这个题? Yes样例对于字符串数组 ["lint","intl","inlt","code"]返回 [原创 2017-07-15 10:33:12 · 250 阅读 · 0 评论 -
剑指offer-复杂链表的复制
/*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; }}*//原创 2017-06-30 10:18:10 · 174 阅读 · 0 评论 -
lintcode--快乐数
写一个算法来判断一个数是不是"快乐数"。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。public class Solution { public boolean isHappy(int n)原创 2017-07-16 09:17:49 · 183 阅读 · 0 评论 -
lintcode-- 四数之和
给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。 注意事项四元组(a, b, c, d)中,需要满足a 答案中不可以包含重复的四元组。您在真实的面试中是否遇到过这个题? Yes样例例如,对于给定的整数数组S=[1, 0, -1, 0, -2, 2] 和 targ原创 2017-07-16 09:29:14 · 215 阅读 · 0 评论 -
lintcode--子数组之和
给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置 注意事项There is at least one subarray that it's sum equals to zero.您在真实的面试中是否遇到过这个题? Yes样例给出 [-3, 1, 2, -3, 4],返回[0,原创 2017-07-16 10:01:51 · 205 阅读 · 0 评论 -
lintcode--翻转链表
翻转一个链表您在真实的面试中是否遇到过这个题? Yes样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next;原创 2017-07-16 10:36:01 · 221 阅读 · 0 评论 -
lintocde--带环链表
给定一个链表,判断它是否有环。您在真实的面试中是否遇到过这个题? Yes样例给出 -21->10->4->5, tail connects to node index 1,返回 true /* 给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链原创 2017-07-16 10:39:52 · 200 阅读 · 0 评论 -
lintcode--和大于s的最小数组
给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。您在真实的面试中是否遇到过这个题? Yes样例给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。/*定义两个指针,slow,fast,以先后速度原创 2017-07-20 09:54:27 · 253 阅读 · 0 评论 -
lintcode -- 数字组合II
给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。 注意事项所有的数字(包括目标数字)均为正整数。元素组合(a1, a2, … , ak)必须是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。解集不能包含重复的组合。 您在真实的面试中是否遇到过这个题? Ye原创 2017-07-20 10:17:56 · 200 阅读 · 0 评论 -
lintcode --数组划分
给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。 注意事项你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.原创 2017-07-20 10:56:36 · 227 阅读 · 0 评论 -
lintcode--最小子数组
给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 注意事项子数组最少包含一个数字您在真实的面试中是否遇到过这个题? Yes样例给出数组[1, -1, -2, 1],返回 -3/*判断加与不加的情况,这道题的解法很巧妙,类似于背包问题。每个数组的元素都有两种情况,加与不加,原创 2017-07-20 11:35:25 · 252 阅读 · 0 评论 -
lintcode--链表排序
在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。您在真实的面试中是否遇到过这个题? Yes样例给出 1->3->2->null,给它排序变成 1->2->3->null./** * Definition for ListNode. * public class ListNode { * int v原创 2017-07-17 08:41:35 · 255 阅读 · 0 评论 -
lintcode -合并k个排序链表
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。您在真实的面试中是否遇到过这个题? Yes样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null/** * Definition for ListNode. * public class ListN原创 2017-07-17 09:00:02 · 375 阅读 · 0 评论 -
lintcode--带环链表II
给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。您在真实的面试中是否遇到过这个题? Yes样例给出 -21->10->4->5, tail connects to node index 1,返回10/** * Definition for ListNode. * public class原创 2017-07-17 09:16:33 · 215 阅读 · 0 评论 -
lintcode--回文链表
设计一种方式检查一个链表是否为回文链表。您在真实的面试中是否遇到过这个题? Yes样例1->2->1 就是一个回文链表。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNo原创 2017-07-17 09:33:24 · 181 阅读 · 0 评论 -
翻转链表II
翻转链表中第m个节点到第n个节点的部分 注意事项m,n满足1 ≤ m ≤ n ≤ 链表长度您在真实的面试中是否遇到过这个题? Yes样例给出链表1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null/** * Definition for ListN原创 2017-07-17 09:51:05 · 220 阅读 · 0 评论 -
lintcode -- 最大子数组II
给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。 注意事项子数组最少包含一个数您在真实的面试中是否遇到过这个题? Yes样例给出数组 [1, 3, -1, 2, -1, 2]这两个子数组分别为 [1, 3] 和 [2, -1, 2]原创 2017-07-21 10:08:38 · 287 阅读 · 0 评论 -
lintcode--最大子数组差
给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。 注意事项子数组最少包含一个数您在真实的面试中是否遇到过这个题? Yes样例给出数组[1, 2, -3, 1],返回 6/*当A>B 的时候A越大越好原创 2017-07-21 10:19:50 · 252 阅读 · 0 评论 -
lintcode ---最小差
给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。您在真实的面试中是否遇到过这个题? Yes样例给定数组 A = [3,4,6,7], B = [2,3,8,9],返回 0。/*原创 2017-07-21 10:45:16 · 345 阅读 · 0 评论 -
lintcode -- 下一个排列
给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列。如果没有下一个排列,则输出字典序最小的序列。您在真实的面试中是否遇到过这个题? Yes样例左边是原始排列,右边是对应的下一个排列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1/*思路1:原理原创 2017-07-21 11:26:46 · 333 阅读 · 0 评论 -
lintcode -- 最长上升连续子序列
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注意事项time您在真实的面试中是否遇到过这个题? Yes样例给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为[5, 4, 2,原创 2017-07-21 11:49:19 · 231 阅读 · 0 评论 -
lintcode--三数之和
给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。 注意事项在三元组(a, b, c),要求a 结果不能包含重复的三元组。您在真实的面试中是否遇到过这个题? Yes样例如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是:(-1原创 2017-07-18 08:39:49 · 328 阅读 · 0 评论 -
lintcode--买卖股票的最佳时机
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。您在真实的面试中是否遇到过这个题? Yes样例给出一个数组样例 [3,2,3,1,2], 返回 1 /**动态规划法: * 以第i天为分界线,计算第i天之前进行一次交易的最原创 2017-07-18 09:16:40 · 549 阅读 · 0 评论