lintcode
Molength
这个作者很懒,什么都没留下…
展开
-
LintCode刷题之路(四):丑数
设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 样例 如果n = 9, 返回 10 挑战 要求时间复杂度为O(nlogn)或者O(n)思路: 根据丑数的定义可知,每一个丑数都是由前面的丑数生成。例如:2是由1*2得来,3是由1 *3得来。C++:cla...原创 2018-05-09 13:00:22 · 152 阅读 · 0 评论 -
LintCode(十二):带最小值操作的栈
描述实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。如果堆栈中没有数字则不能进行min方法的调用您在真实的面试中是否遇到过这个题?样例如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1思路:用两个栈...原创 2018-10-16 15:09:10 · 306 阅读 · 0 评论 -
LintCode刷题(九):fizz and buzz
复习了半个多月的考试,心力交瘁。继续更新 描述 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz.C++:class Solution {public: /** * @param n: An inte...原创 2018-06-05 10:33:17 · 263 阅读 · 0 评论 -
LintCode刷题之路(八):旋转字符串
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 样例 对于字符串 “abcdefg”. offset=0 => “abcdefg” offset=1 => “gabcdef” offset=2 => “fgabcde” offset=3 => “efgabcd” 挑战 在数组上原地旋转,使用O(1)的额...原创 2018-05-15 12:39:59 · 213 阅读 · 0 评论 -
LintCode刷题之路(三):统计数字
计算数字k在0到n中的出现的次数,k可能是0~9的一个值例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)思路: 设置5个变量: cur : 当前位置的数字 before : 当前位置前的数字,如12345中4(十位)的before为123 after : 当前位置后的数...原创 2018-05-08 00:35:42 · 185 阅读 · 0 评论 -
LintCode刷题之路(七):Serialize and Deserialize Binary Tree
设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。 样例 给出一个测试数据样例, 二叉树{3,9,20,#,#,15,7},表示如下的树结构: 3 ...原创 2018-05-14 09:54:48 · 488 阅读 · 0 评论 -
LintCode刷题之路(二):n!尾部的零
设计一个算法,计算出n阶乘中尾部零的个数 要求:O(logN)的时间复杂度以n = 101为例 解题思路: 对于n!=1*2…* n,对于相乘最低位能出现0的情况:5*偶数,每一组中偶数的个数多余5的倍数的个数,所以只考虑5x,即每一组中有多少个5x就有多少个零 所以在由1开始,到n结束,5个数为一组:【1,2,3,4,5】,【6,7,8,9,10】,… 能够分为n/5组...原创 2018-05-06 15:04:47 · 148 阅读 · 0 评论 -
LintCode刷题之路(一):A+B问题
C++:class Solution {public: /** * @param a: An integer * @param b: An integer * @return: The sum of a and b */ int aplusb(int a, int b) { // write your code h...原创 2018-05-05 20:55:32 · 407 阅读 · 0 评论 -
LintCode刷题之路(六):合并排序数组Ⅱ
合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果其中一个数组很大而另一个数组很小?C++class Solution {public: /** * @param A: sorted integer array ...原创 2018-05-11 20:54:23 · 181 阅读 · 0 评论 -
LintCode刷题之路(五):第K大元素
第k大元素 在数组中找到第k大的元素 样例 给出数组 [9,3,2,4,8],第三大的元素是 4 给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推 挑战 要求时间复杂度为O(n),空间复杂度为O(1) 思路: 在每一趟中,都会将一个数放入序列的指定位置,放入后,数组被分为两个独立的部分...原创 2018-05-10 22:38:26 · 245 阅读 · 0 评论 -
LintCode(十五):全排列
给定一个数字列表,返回其所有可能的排列。样例给出一个列表[1,2,3],其全排列为:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]挑战使用递归和非递归分别解决。注意事项你可以假设没有重复数字。思路一:递归以[1,2,3,4]为例:固定第一个元素为1,剩下的问题便是求[2,3,4]的全排列;在[2,3,4]中,固定...原创 2018-12-12 16:29:08 · 223 阅读 · 0 评论