随笔分类 -  LintCode

摘要:给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0 阅读全文
posted @ 2018-01-05 07:31 三人木君 阅读(188) 评论(0) 推荐(0)
摘要:给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序 注意事项 1.必须在原数组上操作2.最小化操作数 1.必须在原数组上操作2.最小化操作数 1.必须在原数组上操作2.最小化操作数 样例 给出 nums = [0, 1, 0, 3, 12], 调用函数之后, num 阅读全文
posted @ 2018-01-05 07:16 三人木君 阅读(213) 评论(0) 推荐(0)
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 很经典的题目,递归求解 1 int maxDepth(TreeNode *root) { 2 // write your cod 阅读全文
posted @ 2018-01-05 06:08 三人木君 阅读(238) 评论(0) 推荐(0)
摘要:给定一个未排序的整数数组,找出最长连续序列的长度。 说明 要求你的算法复杂度为O(n) 样例 给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 4 先上一个无脑能AC的 1 int longestConsecutive(vector< 阅读全文
posted @ 2018-01-04 02:34 三人木君 阅读(1107) 评论(0) 推荐(0)
摘要:给出一个数组 nums 包含 n + 1 个整数,每个整数是从 1到 n (包括边界),保证至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 注意事项 1.不能修改数组(假设数组只能读)2.只能用额外的O(1)的空间3.时间复杂度小于O(n^2)4.数组中只有一个重复的数,但可能重 阅读全文
posted @ 2018-01-03 12:10 三人木君 阅读(354) 评论(0) 推荐(0)
摘要:合并两个排序的整数数组A和B变成一个新的数组。 样例 给出 A = [1, 2, 3, empty, empty], B = [4, 5] 合并之后 A 将变成 [1,2,3,4,5] 看的出来A后面empty的地方是留给AB中较大的数的,问题就在于怎么选出大的数去填这个空 既然AB已经是有序的了, 阅读全文
posted @ 2018-01-03 04:51 三人木君 阅读(263) 评论(0) 推荐(0)
摘要:合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 先上一个无脑的,可以AC 1 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) 阅读全文
posted @ 2018-01-03 02:52 三人木君 阅读(418) 评论(0) 推荐(0)
摘要:设计一个数据结构实现在平均 O(1) 的复杂度下执行以下所有的操作。 insert(val): 如果这个元素不在set中,则插入。 remove(val): 如果这个元素在set中,则从set中移除。 getRandom: 随机从set中返回一个元素。每一个元素返回的可能性必须相同。 insert( 阅读全文
posted @ 2018-01-03 02:14 三人木君 阅读(196) 评论(0) 推荐(0)
摘要:给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 样例 给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最 阅读全文
posted @ 2018-01-02 15:06 三人木君 阅读(531) 评论(0) 推荐(0)
摘要:给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。 我们可以使用整数 0,1 和 2 分别代表红,白,蓝。 注意事项 不能使用代码库中的排序函数来解决这个问题。排序需要在原数组中进行。 不能使用代码库中的排序函数来解决这个问题。排序需 阅读全文
posted @ 2018-01-02 01:43 三人木君 阅读(261) 评论(0) 推荐(0)
摘要:给定两个整数数组(第一个是数组 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  阅读全文
posted @ 2017-12-31 09:45 三人木君 阅读(221) 评论(0) 推荐(0)
摘要:给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。 注意事项 这个问题有两个方法,一个是贪心和 动态规划。 贪心方法时间复杂度为O(N)。 动态规划方法的时间复杂度为为O(n^2)。 我们手动设置小型数据集 阅读全文
posted @ 2017-12-31 05:02 三人木君 阅读(241) 评论(0) 推荐(1)
摘要:Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. 阅读全文
posted @ 2017-12-31 04:14 三人木君 阅读(184) 评论(0) 推荐(0)
摘要:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意事项 子数组最少包含一个数 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 “44. 最小子数组”的姊妹题,思路一样 1 int maxSubArray(vector 阅读全文
posted @ 2017-12-30 05:38 三人木君 阅读(201) 评论(0) 推荐(0)
摘要:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 子数组最少包含一个数字 样例 给出数组[1, -1, -2, 1],返回 -3 动态规划 原数组为nums[] 令S[i]为到i为止的最小和 那么S[i]=min{nums[i], nums[i]+S[i-1] } basecase: S 阅读全文
posted @ 2017-12-30 05:33 三人木君 阅读(275) 评论(0) 推荐(0)
摘要:给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。 注意事项 容器不可倾斜。 样例 给出[1,3,2], 最大 阅读全文
posted @ 2017-12-26 05:00 三人木君 阅读(434) 评论(0) 推荐(0)
摘要:有一个机器人的位于一个 m × n 个网格左上角。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。 问有多少条不同的路径? 注意事项 n和m均不超过100 样例 给出 m = 3 和 n = 3, 返回 6.给出 m = 4 和 n = 5, 返回 35. 一个比较典型的DP问 阅读全文
posted @ 2017-12-20 09:31 三人木君 阅读(172) 评论(0) 推荐(0)
摘要:实现一个算法确定字符串中的字符是否均唯一出现 样例 给出"abc",返回 true 给出"aab",返回 false ASCⅡ一共有128个字符,给每一个字符一个bool位,初始状态为null 每碰见一个就设成true,如果遇见了一个true说明是第二次了,return false 1 bool i 阅读全文
posted @ 2017-12-19 05:07 三人木君 阅读(235) 评论(0) 推荐(0)
摘要:给定一个已经按升序排列的数组,找到两个数使他们加起来的和等于特定数。函数应该返回这两个数的下标,index1必须小于index2。注意返回的值不是 0-based。 注意事项 你可以假设每个输入刚好只有一个答案 你可以假设每个输入刚好只有一个答案 你可以假设每个输入刚好只有一个答案 样例 给定数组为 阅读全文
posted @ 2017-12-19 04:03 三人木君 阅读(158) 评论(0) 推荐(0)
摘要:你给出一个整数数组(size为n),其具有以下特点: 相邻位置的数字是不同的 A[0] < A[1] 并且 A[n - 2] > A[n - 1] 假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。 注意事项 It's guaranteed 阅读全文
posted @ 2017-12-19 03:48 三人木君 阅读(208) 评论(0) 推荐(0)