![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lintcode
文章平均质量分 63
ljlstart
这个作者很懒,什么都没留下…
展开
-
lintcode-数飞机-391
给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?样例对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], 返回3。注意如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。/** * Definition of Interval: * classs Int原创 2015-09-26 19:39:27 · 1152 阅读 · 0 评论 -
lintcode-Segmemt Tree Build II-439
The structure of Segment Tree is a binary tree which each node has two attributes start and end denote an segment / interval.start and end are both integers, they should be assigned in following rules:The root's start and end is given by build method.原创 2015-09-24 21:13:50 · 413 阅读 · 0 评论 -
lintcode-x的平方根-141
实现 int sqrt(int x) 函数,计算并返回 x 的平方根。样例sqrt(3) = 1sqrt(4) = 2sqrt(5) = 2sqrt(10) = 3挑战O(log(x))原创 2015-09-25 15:46:39 · 918 阅读 · 0 评论 -
lintcode-线段树的构造-201
线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:根节点的 start 和 end 由 build 方法所给出。对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。对于节点 A 的右儿子,有 start=(A.left + A.right) / 2 + 1, end=A.right。如果 start 等于 end, 那么该节点是叶子节点,不再有原创 2015-09-24 21:23:30 · 865 阅读 · 0 评论 -
lintcode-区间求和I-206
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */class Seg原创 2015-09-25 14:33:45 · 1134 阅读 · 2 评论 -
lintcode-线段树的查询-202
对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子区间[start, end]内的最大值。样例对于数组 [1, 4, 2, 3], 对应的线段树为: [0, 3, max=4] /原创 2015-09-24 21:45:16 · 1213 阅读 · 0 评论 -
lintcode-423
class Solution {public: bool isValidParentheses(string& s) { // Write your code here if(0==s.size()||1==s.size()) return false; stack base; for(au原创 2015-09-02 20:19:07 · 567 阅读 · 0 评论 -
lintcode-加油站-187
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。样例现在有4个加油站,汽油量gas[i]=[1, 1, 3, 1转载 2015-09-26 20:39:47 · 1035 阅读 · 0 评论 -
lintcode-线段树查询II-247
/** * Definition of SegmentTreeNode: * class SegmentTreeNode { * public: * int start, end, count; * SegmentTreeNode *left, *right; * SegmentTreeNode(int start, int end, int count) {原创 2015-09-24 22:11:27 · 935 阅读 · 0 评论 -
lintcode-回文链表-223
设计一种方式检查一个链表是否为回文链表。样例1->2->1 就是一个回文链表。挑战O(n)的时间和O(1)的额外空间。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int原创 2015-10-18 23:28:51 · 600 阅读 · 0 评论 -
lintcode-Swap Nodes in Pairs -451
Given a linked list, swap every two adjacent nodes and return its head.样例Given 1->2->3->4, you should return the list as 2->1->4->3.挑战Your algorithm should use only constant space.原创 2015-10-18 21:34:22 · 382 阅读 · 0 评论 -
lintcode-落单的数III-84
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。样例给出 [1,2,2,3,4,4,5,3],返回 1和5挑战O(n)时间复杂度,O(1)的额外空间复杂度class Solution { int getbitposition(int a){ int num=1; i原创 2015-10-19 20:24:37 · 585 阅读 · 0 评论 -
lintcode-Candy-412
有 N 个小孩站成一列。每个小孩有一个评级。按照以下要求,给小孩分糖果:每个小孩至少得到一颗糖果。评级越高的小孩可以得到更多的糖果。需最少准备多少糖果?样例给定评级 = [1, 2], 返回 3.给定评级 = [1, 1, 1], 返回 3.给定评级 = [1, 2, 2], 返回 4. ([1,2,1]).标签 Ex转载 2015-10-19 22:26:35 · 746 阅读 · 0 评论 -
lintcode-Remove Linked List Elements-452
Remove all elements from a linked list of integers that have value val.样例Given 1->2->3->3->4->5->3, val = 3, you should return the list as1->2->4->5class Solution { public:原创 2015-10-19 00:19:01 · 587 阅读 · 0 评论 -
lintcode- 乘积最大子序列
找出一个序列中乘积最大的连续子序列(至少包含一个数)。您在真实的面试中是否遇到过这个题?样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6 class Solution { public: int maxProduct(vector& nums) {转载 2015-11-06 23:25:41 · 419 阅读 · 0 评论 -
lintcode-合并k个排序链表-104
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *ne原创 2015-10-19 21:20:51 · 1378 阅读 · 0 评论 -
lintcode-有效回文字符串
给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写例如 "A man, a plan, a canal: Panama" 是一个回文。 "race a car" 不是一个回文。class Solution {public: /** * @param s A string * @return Whether the st原创 2015-09-02 21:01:00 · 1533 阅读 · 0 评论 -
lintcode- Flatten Binary Tree to Linked List-453
Flatten a binary tree to a fake "linked list" in pre-order traversal.Here we use the right pointer in TreeNode as the next pointer in ListNode.样例 1 \ 1转载 2015-10-21 21:24:50 · 353 阅读 · 0 评论 -
lintcode-排序列表转换为二分查找树-106
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * }原创 2015-10-21 22:01:14 · 482 阅读 · 0 评论 -
lintcode-搜索旋转排序数组-62
假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。样例 给出[4, 5, 1, 2, 3]和target=1,返回 2给出[4, 5, 1, 2, 3]和target=0,返回 -1原创 2015-09-12 23:43:14 · 2219 阅读 · 0 评论 -
lintcode-最长回文子串-200
给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"。挑战 O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好class Solution {public: string long原创 2015-10-23 01:01:35 · 622 阅读 · 0 评论 -
lintcode-N皇后问题II
n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,求n皇后问题的有多少种解决方案class Solution { void search(vector &c,int n,int cur,int &ret){ if(cur==n){ ++ret; return;原创 2015-10-24 20:57:11 · 736 阅读 · 0 评论 -
lintcode-链表插入排序
用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->null/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) {原创 2015-10-24 22:27:17 · 1358 阅读 · 0 评论 -
lintcode-赋值运算符重载
实现赋值运算符重载函数,确保:新的数据可准确地被复制旧的数据可准确地删除/释放可进行 A = B = C 赋值样例如果进行 A = B 赋值,则 A 中的数据被删除,取而代之的是 B 中的数据。如果进行 A = B = C 赋值,则 A 和 B 都复制了 C 中的数据。挑战充分考虑安全问题,并注意释放旧数据。说明本题只适用原创 2015-10-24 23:03:22 · 615 阅读 · 0 评论 -
lintcode-最近公共祖先-88
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。最近公共祖先是两个节点的公共的祖先节点且具有最大深度。样例 对于下面这棵二叉树 4 / \3 7 / \ 5 6LCA(3, 5) = 4LCA(5, 6) = 7LCA(6, 7) = 7/** * Definition of TreeNode: * cl原创 2015-09-16 23:20:57 · 1173 阅读 · 0 评论 -
lintcode-二叉树的中序遍历(非递归)-67
给出一棵二叉树,返回其中序遍历您在真实的面试中是否遇到过这个题? Yes样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2]/** * Definition of TreeNode: * class TreeNode { * public: * int val; *原创 2015-09-14 19:28:20 · 526 阅读 · 0 评论 -
lintcode-合并排序数组II-64
合并两个排序的整数数组A和B变成一个新的数组。样例给出A = [1, 2, 3, empty, empty] B = [4,5]合并之后A将变成[1,2,3,4,5]注意你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。class Solution {public: void mergeSor原创 2015-09-14 19:59:20 · 769 阅读 · 0 评论 -
lintcode-数字组合II-153
给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。样例给出一个例子,候选数字集合为[10,1,6,7,2,1,5] 和目标数字8 ,解集为:[[1,7],[1,2,5],[2,6],[1,1,6]]注意 所有的数字(包括目标数字)均为正整数。元素组合(a1, a2原创 2015-09-12 22:51:18 · 766 阅读 · 0 评论 -
lintcode-乱序字符串-171
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。样例对于字符串数组 ["lint","intl","inlt","code"]返回 ["lint","inlt","intl"]注意 所有的字符串都只包含小写字母解题思路:类似哈希表原创 2015-09-13 11:33:52 · 791 阅读 · 0 评论 -
lintcode-数字组合-135
给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7],[2,2,3]样例给出候选数组[2,3,6,7]和目标数字7返回 [[7],[2,2,3]]注意 所有的数字(包括目标数字)均为正整数。元素组合(a1原创 2015-09-13 13:29:45 · 1438 阅读 · 0 评论 -
lintcode-交错正负数-144
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。样例给出数组[-1, -2, -3, 4, 5, 6],重新排序之后,变成[-1, 5, -2, 4, -3, 6]或者其他任何满足要求的答案注意不需要保持正整数或者负整数原来的顺序。挑战 原地完成,没有额外的空间class Solution {p原创 2015-09-12 11:01:59 · 609 阅读 · 0 评论 -
lintcode-组合-152
组给出两个整数n和k,返回从1......n中选出的k个数的组合。样例 例如 n = 4 且 k = 2返回的解为:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]解题思路:元素放于不放入数组的思想class Solution {public: void backtracing(vector > &r原创 2015-09-11 16:54:23 · 965 阅读 · 0 评论 -
lintcode-最大数-184
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数样例给出样例 [1, 20, 23, 4, 8],返回组合最大的整数为8423201注意 最后的结果可能很大,所以我们返回一个字符串来代替这个整数C++耗时:25msstring itoa(int a){ if(a==0)原创 2015-09-10 11:10:37 · 870 阅读 · 0 评论 -
lintcode-第k个排列-388
给定 n 和 k,求123..n组成的排列中的第k 个排列。样例对于 n = 3, 所有的排列如下:123132213231312321如果 k = 4, 第4个排列为,231.注意 1 ≤ n ≤ 9class Solution {public: bool nextPermutation(ve原创 2015-09-09 22:47:45 · 750 阅读 · 0 评论 -
lintcode-不同的路径-114
有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。问有多少条不同的路径?样例1,11,21,31,41,51,61,72,1原创 2015-09-09 22:25:04 · 670 阅读 · 0 评论 -
lintcode-数字三角形-109
给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。样例 比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 (2 + 3 + 5 + 1 = 11)class Solution {public:原创 2015-09-09 21:36:37 · 925 阅读 · 0 评论 -
lintcode-二叉树中的最大路径和-94
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)样例 给出一棵二叉树: 1 / \ 2 3返回6/** * Definition of TreeNode: * class TreeNode { * public: *原创 2015-09-09 13:35:39 · 618 阅读 · 0 评论 -
lintcode-搜索区间-61
给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]样例 给出[5, 7, 7, 8, 8, 10]和目标值target=8,返回[3, 4]class Solution { public: int LowerBound(vector &A,int tar原创 2015-09-08 23:51:46 · 777 阅读 · 0 评论 -
lintcode-验证查找二叉树-95
给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的值。节点的右子树中的值要严格大于该节点的值。左右子树也必须是二叉查找树。样例 一个例子: 1 / \ 2 3 / 4 \ 5上述这棵二叉树序列化为"{1,2,3,#,#,4,#原创 2015-09-09 19:26:38 · 773 阅读 · 0 评论 -
lintcode-插入区间
给出一个无重叠的按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。您在真实的面试中是否遇到过这个题?样例插入区间[2, 5] 到 [[1,2], [5,9]],我们得到[[1,9]]。插入区间[3, 4] 到[[1,2], [5,9]],我们得到 [[1,2], [3,4],原创 2015-09-08 00:26:41 · 1459 阅读 · 1 评论