
LintCode编程
长风o
本博客为编程学习记录之用,同时方便自己总结和他人借鉴。如有不当之处请联系本人。
展开
-
477. 被围绕的区域
解题思路:关键点是发现所有不被包围的点都与边界上的“O”点相连。给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满。您在真实的面试中是否遇到过这个题? Yes样例给出二维矩阵:X X X XX O O XX X O XX O X X把被 'X' 围绕的区域填充之后变为:X原创 2018-03-21 15:48:54 · 542 阅读 · 0 评论 -
Lintcode 将数组重新排序以构造最小值
给定一个整数数组,请将其重新排序,以构造最小值。 注意事项The result may be very large, so you need to return a string instead of an integer.您在真实的面试中是否遇到过这个题? Yes样例给定 [3, 32, 321],通过将数组重新排序原创 2017-04-19 20:20:17 · 673 阅读 · 0 评论 -
Lintcode x的n次幂
实现 pow(x,n) 注意事项不用担心精度,当答案和标准输出差绝对值小于1e-3时都算正确您在真实的面试中是否遇到过这个题? Yes样例Pow(2.1, 3) = 9.261Pow(0, 1) = 0Pow(1, 0) = 1挑战 O(logn) time标签 二原创 2017-04-19 16:32:25 · 1691 阅读 · 2 评论 -
lintcode 第12题
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。原创 2017-01-16 09:50:36 · 425 阅读 · 0 评论 -
Lintcode 两个排序数组的中位数
两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log (m+n))。您在真实的面试中是否遇到过这个题? Yes样例给出数组A = [1,2,3,4,5,6] B = [2,3,4,5],中位数3.5给出数组A = [1,2,3] B = [4,5],中位数 3挑战 时间复杂原创 2017-04-07 20:09:14 · 1495 阅读 · 0 评论 -
Lintcode 二叉树的前序遍历 (递归和非递归法)
给出一棵二叉树,返回其节点值的前序遍历。您在真实的面试中是否遇到过这个题? Yes样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].挑战 你能使用非递归实现么?标签 递归 二叉树 二叉树遍历 非递归一、递归形式:原创 2017-04-06 19:16:58 · 3776 阅读 · 0 评论 -
Lintcode 二叉查找树中搜索区间
给定两个值 k1 和 k2(k1 您在真实的面试中是否遇到过这个题? Yes样例如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22]. 20 / \ 8 22 / \4 12标签 二叉查找树 二叉树二叉搜索树具有左子树都小于父节点,右子树大原创 2017-04-05 20:18:11 · 1287 阅读 · 0 评论 -
Lintcode 二叉树的中序遍历
给出一棵二叉树,返回其中序遍历您在真实的面试中是否遇到过这个题? Yes样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].挑战 你能使用非递归算法来实现么?标签 递归 二叉树 二叉树遍历方法一 递归/**原创 2017-04-08 19:19:36 · 1236 阅读 · 0 评论 -
Lintcode 寻找峰值
你给出一个整数数组(size为n),其具有以下特点:相邻位置的数字是不同的A[0] A[n - 1]假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。 注意事项数组可能包含多个峰值,只需找到其中的任何一个即可您在真实的面试中是否遇到过这个题? Yes原创 2017-04-10 20:08:48 · 506 阅读 · 0 评论 -
Lintcode 平面列表
给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。 注意事项如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。您在真实的面试中是否遇到过这个题? Yes样例给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,原创 2017-04-12 23:10:02 · 918 阅读 · 0 评论 -
Lintcode 螺旋矩阵 II
给你一个数n生成一个包含1-n^2的螺旋形矩阵 注意事项您在真实的面试中是否遇到过这个题? Yes样例n = 3矩阵为[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]标签 数组class Solution {public: /**原创 2017-04-16 21:32:57 · 461 阅读 · 0 评论 -
Lintcode 装最多水的容器
给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。 注意事项容器不可倾斜。您在真实的面试中是否遇到过这个题? Yes样例原创 2017-04-16 23:35:15 · 1134 阅读 · 0 评论 -
Lintcode 三数之和
给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。 注意事项在三元组(a, b, c),要求a 结果不能包含重复的三元组。您在真实的面试中是否遇到过这个题? Yes样例如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是:原创 2017-04-17 14:45:18 · 595 阅读 · 0 评论 -
Lintcode 在O(1)时间复杂度删除链表节点
给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。您在真实的面试中是否遇到过这个题? Yes样例给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。标签 Cracking The Coding Interview 链表分析:原创 2017-04-17 15:26:20 · 463 阅读 · 0 评论 -
Lintcode 搜索旋转排序数组
假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。您在真实的面试中是否遇到过这个题? Yes样例给出[4, 5, 1, 2, 3]和target=1,返回 2原创 2017-04-06 19:58:43 · 835 阅读 · 0 评论 -
192. 通配符匹配
该题创建一个矩阵 f(i,j)代表s的前i项可以和p的前j项匹配。判断两个可能包含通配符“?”和“*”的字符串是否匹配。匹配规则如下:'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个串完全匹配才算匹配成功。函数接口如下:bool isMatch(const char *s, const char *p)您在真实的面试中是否遇到过这个题?原创 2018-03-21 11:07:25 · 351 阅读 · 0 评论 -
114. 不同的路径
题目分析:创建一个M*N的数组 子问题,f(m,n)代表从(0,0)到(m,n)的路径数,则f(m,n)=f(m-1,n)+f(m,n-1);有一个机器人的位于一个 m × n 个网格左上角。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。问有多少条不同的路径? 注意事项n和m均不超过100您在真实的面试中是否遇到过这个题原创 2018-03-20 22:39:47 · 436 阅读 · 0 评论 -
94. 二叉树中的最大路径和
问题分析:对每一个节点root来说,都维护左右最大子树的值,和其最大路径和max(rootVal,rootVal+leftVal,rootval+rightVal,rootval+rightVal+leftVal),也就是需要获取最大左右子树,即root1的返回值max(root1Val,root1Val+leftVal,root1val+rightVal);给出一棵二叉树,寻找一条路径使原创 2018-03-20 22:00:04 · 383 阅读 · 0 评论 -
29. 交叉字符串
29. 交叉字符串 描述 笔记 数据 评测给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。您在真实的面试中是否遇到过这个题? Yes样例比如 s1 = "aabcc" s2 = "dbbca" - 当 s3 = "aadbbcbcac",返回 true. - 当 s3 = "aa原创 2018-03-20 13:35:50 · 459 阅读 · 0 评论 -
547. 两数组的交
返回两个数组的交 注意事项Each element in the result must be unique.The result can be in any order.您在真实的面试中是否遇到过这个题? Yes样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].原创 2018-03-19 21:56:45 · 250 阅读 · 0 评论 -
457. 经典二分查找问题
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1您在真实的面试中是否遇到过这个题? Yes样例给出数组 [1, 2, 2, 4, 5, 5].对于 target = 2, 返回 1 或者 2.对于 target = 5, 返回 4 或者 5.对于 target = 6, 返回 -1.挑战原创 2018-03-19 21:30:16 · 442 阅读 · 0 评论 -
104. 合并k个排序链表
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。您在真实的面试中是否遇到过这个题? Yes样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null/** * Definition of ListNode * class ListNode { * public:原创 2018-03-19 21:03:57 · 238 阅读 · 0 评论 -
lintcode 6-6. 合并排序数组
合并两个排序的整数数组A和B变成一个新的数组。您在真实的面试中是否遇到过这个题? Yes样例给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]挑战 你能否优化你的算法,如果其中一个数组很大而另一个数组很小?标签 相关题目 class Solution原创 2018-01-10 21:56:51 · 466 阅读 · 0 评论 -
lintcode4-4. 丑数 II
设计一个算法,找出只含素因子2,3,5 的第 n 小的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 注意事项我们可以认为1也是一个丑数您在真实的面试中是否遇到过这个题? Yes样例如果n = 9, 返回 10挑战 要求时间复杂度为O(nlogn)原创 2017-12-18 21:50:16 · 443 阅读 · 0 评论 -
lintcode2-2. 尾部的零
设计一个算法,计算出n阶乘中尾部零的个数您在真实的面试中是否遇到过这个题? Yes样例11! = 39916800,因此应该返回 2挑战 O(logN)的时间复杂度标签 数学相关题目 这种直接数有多少个0的方法,即包含多少个5,时间复杂度是O(n)在时间上是通原创 2017-12-14 21:01:24 · 497 阅读 · 0 评论 -
lintcode1- 1. A + B 问题
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。您在真实的面试中是否遇到过这个题? Yes说明a和b都是 32位 整数么?是的我可以使用位运算符么?当然可以样例原创 2017-12-14 19:54:31 · 324 阅读 · 0 评论 -
lintcode5-5. 第k大元素
在数组中找到第k大的元素 注意事项你可以交换数组中的元素的位置您在真实的面试中是否遇到过这个题? Yes样例给出数组 [9,3,2,4,8],第三大的元素是 4给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推挑战 要求时间复杂度为O(n)原创 2017-12-20 15:04:54 · 325 阅读 · 0 评论 -
Lintcode 二进制中有多少个1
计算在一个 32 位的整数的二进制表式中有多少个 1.您在真实的面试中是否遇到过这个题? Yes样例给定 32 (100000),返回 1给定 5 (101),返回 2给定 1023 (111111111),返回 9挑战 If the integer is n bits with m 1 bits. Can you原创 2017-04-17 15:38:28 · 933 阅读 · 0 评论 -
Lintcode 摆动排序
给你一个没有排序的数组,请将原数组就地重新排列满足如下性质nums[0] = nums[2] <= nums[3].... 注意事项请就地排序数组,也就是不需要额外数组您在真实的面试中是否遇到过这个题? Yes样例给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2原创 2017-04-17 17:22:44 · 989 阅读 · 0 评论 -
面试题 两个队列实现栈
两个队列实现栈//前提已知typedef struct queue{ int queuesize; int head, tail; int *q;}Queue;void InitQueue(Queue *q);void EnQueue(Queue *q, int key);int DeQueue(Queue *q);int转载 2017-03-23 21:30:41 · 394 阅读 · 0 评论 -
Lintcode 用栈实现队列
正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。您在真实的面试中是否遇到过这个题? Yes样例比如push(1), pop(), push(2), push(3), to原创 2017-03-23 21:01:28 · 576 阅读 · 0 评论 -
Lintcode 搜索二维矩阵 II
写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。您在真实的面试中是否遇到过这个题? Yes样例考虑下列矩阵:[ [1, 3, 5, 7], [2, 4, 7,原创 2017-03-23 19:09:03 · 440 阅读 · 0 评论 -
Lintcode 主元素 II
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。 注意事项数组中只有唯一的主元素您在真实的面试中是否遇到过这个题? Yes样例给出数组[1,2,1,2,1,3,3] 返回 1挑战 要求时间复杂度为O(n),空间复杂度为O(1)。标原创 2017-03-30 22:24:40 · 405 阅读 · 0 评论 -
Lintcode 主元素
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 注意事项You may assume that the array is non-empty and the majority number always exist in the array.您在真实的面试中是否遇到过这个题? Yes原创 2017-03-30 20:17:20 · 366 阅读 · 0 评论 -
Lintcode 最大子数组差
给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。 注意事项子数组最少包含一个数您在真实的面试中是否遇到过这个题? Yes样例给出数组[1, 2, -3, 1],返回 6挑战 时间复杂度为O(n),空间复原创 2017-03-29 21:03:29 · 474 阅读 · 0 评论 -
Lintcode 最小子数组
给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 注意事项子数组最少包含一个数字您在真实的面试中是否遇到过这个题? Yes样例给出数组[1, -1, -2, 1],返回 -3class Solution {public: /** * @param nums原创 2017-03-29 21:02:16 · 364 阅读 · 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思路:1,将需要反转的部分的成员变量值va原创 2017-03-22 19:01:18 · 307 阅读 · 0 评论 -
Lintcode 搜索旋转排序数组 II
跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。您在真实的面试中是否遇到过这个题? Yes样例给出[3,4,4,5,7,0,1,2]和target=4,返回 true标签 二分法 排序数组 数组原创 2017-04-07 16:03:47 · 361 阅读 · 0 评论 -
Lintcode 合并排序数组 II
合并两个排序的整数数组A和B变成一个新的数组。 注意事项你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。您在真实的面试中是否遇到过这个题? Yes样例给出 A = [1, 2, 3, empty, empty], B = [4, 5]合并之后 A 将变成 [1,2,3,4,5]原创 2017-04-07 16:18:11 · 420 阅读 · 0 评论 -
Lintcode 最大子数组 II
给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。 注意事项子数组最少包含一个数您在真实的面试中是否遇到过这个题? Yes样例给出数组 [1, 3, -1, 2, -1, 2]这两个子数组分别为 [1, 3] 和 [2, -1, 2]原创 2017-03-28 22:42:53 · 553 阅读 · 0 评论