LintCode
文章平均质量分 68
Oeljeklaus
python开发,大数据,图数据,数据分析
展开
-
204. 单例
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。你的任务是设计一个 getInstance 方法,对于给定的类,每次调用 ...原创 2018-06-10 11:53:28 · 1016 阅读 · 0 评论 -
97. 二叉树的最大深度
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.解题思路 判断左右子树的深度即可。实现代码 /** * Definition of TreeNode:...原创 2018-06-09 19:59:14 · 970 阅读 · 0 评论 -
93. 平衡二叉树
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 样例给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}A) 3 B) 3 / \ ...原创 2018-06-09 19:57:10 · 1033 阅读 · 0 评论 -
82. 落单的数
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例给出 [1,2,2,1,3,4,3],返回 4挑战一次遍历,常数级的额外空间复杂度解题思路 由于只有一个出现一次,其他均出现两次,那么采用异或,最后将会得到这个数。实现代码class Solution ...原创 2018-06-09 19:51:28 · 1039 阅读 · 0 评论 -
71. 二叉树的锯齿形层次遍历
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7返回其锯齿形的层次遍历为:[ [3], [20,9], [15...原创 2018-06-06 10:05:06 · 1212 阅读 · 0 评论 -
70. 二叉树的层次遍历 II
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 描述 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍...原创 2018-06-06 10:00:24 · 1248 阅读 · 0 评论 -
480. 二叉树的所有路径
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]解题思路 将整棵树进行前序遍历,需要使用一个vector记录路径,不过需要注意判断...原创 2018-06-06 09:22:04 · 1225 阅读 · 0 评论 -
464. 整数排序 II
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。解题思路 考察基本算法。实现代码class Solution {public: /** ...原创 2018-06-06 08:31:47 · 1161 阅读 · 0 评论 -
138. 子数组之和
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置样例给出 [-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].解题思路 依次求出各个子数组之和,不过要注意数组内出现0实现代码class Solution {public: ...原创 2018-06-06 08:31:55 · 1164 阅读 · 0 评论 -
422. 最后一个单词的长度
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个字符串, 包含大小写字母、空格' ',请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。样例给定 s = "Hello World",返回 5。解题思路 以空格切分,然后返回最后单词长度。实现代码public class Solution { /** *...原创 2018-06-06 08:32:01 · 1228 阅读 · 0 评论 -
109. 数字三角形
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。样例比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。解题思路 ...原创 2018-06-06 08:32:06 · 1234 阅读 · 0 评论 -
80.中位数
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5挑战时间复杂度为O(n)解题思路 使用快排。实现代码class Sol...原创 2018-06-05 11:49:08 · 1179 阅读 · 0 评论 -
69. 二叉树的层次遍历
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 描述 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7 返回他的分层遍历结...原创 2018-06-05 09:38:19 · 1289 阅读 · 0 评论 -
68. 二叉树的后序遍历
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 描述 给出一棵二叉树,返回其节点值的后序遍历。 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 挑战 你能使用非递归实现么?解题思路 ...原创 2018-06-05 09:33:51 · 1118 阅读 · 0 评论 -
102. 带环链表
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求给定一个链表,判断它是否有环。样例给出 -21->10->4->5, tail connects to node index 1,返回 true挑战不要使用额外的空间解题思路 使用两个指针,一个指针比另一个指针快,如果快的指针追上了慢的指针,那么就有环。实现代码/** * D...原创 2018-06-09 20:02:27 · 996 阅读 · 0 评论 -
104. Merge K Sorted Lists
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null解题思路 使用归并排序实现代码/** * Definition of ListNo...原创 2018-06-09 20:04:26 · 922 阅读 · 0 评论 -
181. 将整数A转换为B
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求如果要将整数A转换为B,需要改变多少个bit位?样例如把31转换为14,需要改变2个bit位。(31)10=(11111)2(14)10=(01110)2解题思路 将两个数相与,就可以得到不相同的1的个数的整数,然后再次判断1个数即可。实现代码class Solution {public: ...原创 2018-06-10 11:49:38 · 1101 阅读 · 0 评论 -
174. 删除链表中倒数第n个节点
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战O(n)时间复杂度解题思路 使用双...原创 2018-06-10 11:47:14 · 995 阅读 · 0 评论 -
173. 链表插入排序
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->null解题思路/** * Definition of singly-linked-list: * class ListNode { * ...原创 2018-06-10 11:44:19 · 1082 阅读 · 0 评论 -
172. 删除元素
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。元素的顺序可以改变,并且对新的数组不会有影响。样例给出一个数组 [0,4,4,0,0,2,4,4],和值 4返回 4 并且4个元素的新数组为[0,0,0,2]解题思路 循环数组,判断是否为目标元素,如果是,那么将移动数组。实现...原创 2018-06-10 11:41:27 · 1007 阅读 · 0 评论 -
167. 链表求和
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0-&...原创 2018-06-10 10:50:35 · 996 阅读 · 0 评论 -
166. 链表倒数第n个节点
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述找到单链表倒数第n个节点,保证链表中节点的最少数量为n。样例给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.解题思路 使用双指针法,一个指针先走k-1步,另一个指针和前一个指针一起走,前一个指针到达末端后,前一个指针即是倒数第k的节点...原创 2018-06-10 10:46:56 · 1013 阅读 · 0 评论 -
165. 合并两个排序链表
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述将两个排序链表合并为一个新的排序链表样例给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。解题思路 使用归并排序。实现代码/** * Defin...原创 2018-06-10 10:43:49 · 1035 阅读 · 0 评论 -
159. 寻找旋转排序数组中的最小值
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。样例给出[4,5,6,7,0,1,2] 返回 0解题思路 使用二分法,如果中间的数大于最前面,那么中间的数处于递增;...原创 2018-06-10 10:38:48 · 1042 阅读 · 0 评论 -
158. Valid Anagram
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。样例给出 s = "abcd",t="dcab",返回 true.给出 s = "ab", t = "ab", 返回 true.给出 s = "ab", t = "ac", 返回 false.挑原创 2018-06-09 20:19:17 · 1022 阅读 · 0 评论 -
157. 判断字符串是否没有重复字符
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求实现一个算法确定字符串中的字符是否均唯一出现样例给出"abc",返回 true给出"aab",返回 false挑战如果不使用额外的存储空间,你的算法该如何改变?解题思路 先排序,后查重。实现代码class Solution {public: /* * @param str: ...原创 2018-06-09 20:16:07 · 1141 阅读 · 0 评论 -
142. O(1)时间检测2的幂次
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求用 O(1) 时间检测整数 n 是否是 2 的幂次。样例n=4,返回 true;n=5,返回 false.挑战O(1) time解题思路 2的幂次,表明在二进制中,只有一个1.实现代码class Solution {public: /** * @param n: An int...原创 2018-06-09 20:12:42 · 998 阅读 · 0 评论 -
134. LRU缓存策略
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述为最近最少使用(LRU)缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)和写入数据(set)。获取数据get(key):如果缓存中存在key,则获取其数据值(通常是正数),否则返回-1。写入数据set(key, value):如果key还没有在缓存中,则写入其数据值。当缓存达到上限...原创 2018-06-09 20:10:43 · 1003 阅读 · 0 评论 -
111. 爬楼梯
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求111. 爬楼梯假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?样例比如n=3,1+1+1=1+2=2+1=3,共有3种不同的方法返回 3解题思路 根据数学归纳法,这是一个斐波拉契数列。实现代码class Solution {public...原创 2018-06-09 20:08:05 · 1028 阅读 · 0 评论 -
67. 二叉树的中序遍历
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 描述 给出一棵二叉树,返回其中序遍历 样例给出二叉树 {1,#,2,3},1 \ 2 / 3返回 [1,3,2].挑战你能使用非递归算法来实现么?解题思路 使用递归,只是在保存元素的顺序和前序不...原创 2018-06-05 09:30:36 · 1126 阅读 · 0 评论 -
66. 二叉树的前序遍历
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求 描述 给出一棵二叉树,返回其节点值的前序遍历。 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]. 挑战 你能...原创 2018-06-05 09:24:15 · 1170 阅读 · 0 评论 -
64. 合并排序数组
提示 LintCode中的相关算法题实现代码,可以在我的GitHub中下载。题目需求描述合并两个排序的整数数组A和B变成一个新的数组。样例给出 A = [1, 2, 3, empty, empty], B = [4, 5]合并之后 A 将变成 [1,2,3,4,5]解题思路 从后向前合并。实现代码class Solution {public: /* ...原创 2018-06-05 09:18:47 · 1312 阅读 · 0 评论 -
44. 最小子数组
题目需求描述给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。样例给出数组[1, -1, -2, 1],返回 -3解题思路 也是动态规划问题,如果不懂得同学,可以看我的这篇文章最大子数组实现代码class Solution {public: /* * @param nums: a list of integers * @return: A intege...原创 2018-06-03 11:21:02 · 1164 阅读 · 0 评论 -
41. 最大子数组
题目需求 描述 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 挑战 要求时间复杂度为O(n)解题思路 利用动态规划,我们这里使用一个数组保存每一个阶段的和。这里主要的步骤是: 1.如果一个...原创 2018-06-03 11:17:12 · 1227 阅读 · 0 评论 -
40. 用栈实现队列
题目需求 描述 正如标题所述,你需要使用两个栈来实现队列的一些操作。 队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。 pop和top方法都应该返回第一个元素的值。 样例 比如push(1), pop(), push(2), push(3), top(), ...原创 2018-06-03 11:09:43 · 1207 阅读 · 0 评论 -
38. 搜索二维矩阵 II
题目需求 描述 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。 这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例考虑下列矩阵:[ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10]]给出target = 3,返回 2挑战要求O(m+n) 时间...原创 2018-06-03 11:03:37 · 1326 阅读 · 0 评论 -
35. 翻转链表
题目需求 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑战 在原地一次翻转完成实现的思路 主要的思路是;使用两个指针,指向遍历链表的前面的节点,一个指针用来保存后后面的节点。实现的代码/** * Definition of singly-...原创 2018-06-03 10:58:30 · 1149 阅读 · 0 评论 -
16. 带重复元素的排列
题目需求 给出一个具有重复数字的列表,找出列表所有不同的排列。样例 给出列表 [1,2,2],不同的排列有:[ [1,2,2], [2,1,2], [2,2,1]]挑战使用递归和非递归分别完成该题。解题思路 这道题是在全排列的基础上解决的,对于不理解全排列的同学,可以我的上一篇文章全排列.由于有重复的元素,那么我们需要剪枝,这里我们使用一个map来进行判断,如果...原创 2018-06-03 09:30:24 · 1335 阅读 · 0 评论 -
15. 全排列
题目需求 给定一个数字列表,返回其所有可能的排列。 样例 给出一个列表[1,2,3],其全排列为:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]挑战使用递归和非递归分别解决。解题思路 这道题,主要使用的是回溯法,这里我们使用4个方法来进行回溯法的拆解。is_a_solut...原创 2018-06-03 09:18:25 · 1249 阅读 · 0 评论 -
28. 搜索二维矩阵
题目需求 描述 写出一个高效的算法来搜索 m × n矩阵中的值。 这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每行的第一个数大于上一行的最后一个整数。 样例 考虑下列矩阵:[ [1, 3, 5, 7], [10...原创 2018-06-03 08:57:55 · 1272 阅读 · 0 评论