lintCode
文章平均质量分 50
Kavin_Liang
Stay hungry. Stay foolish
展开
-
LintCode 不同的路径 II
不同的路径 II跟进“不同的路径”: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用1和0来表示。样例 如下所示在3x3的网格中有一个障碍物: [ [0,0,0], [0,1,0], [0,0,0] ] 一共有2条不同的路径从左上角到右下角。 注意 m和n均不超过100思路:这题和不同的路径的解题思路是一样的只是增加了一个条件而以,原创 2015-09-25 20:25:35 · 1287 阅读 · 0 评论 -
LintCode 尾部的零
尾部的零设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 挑战 O(logN)的时间复杂度solutioin: 转自Factorials and Trailing Zeroes 1.计算 23!23!有多少个尾0 23!=1×2×3×4×5×6×7×8×9×10×11×12×13×14×15×16×17×18×19×20×21×22×2323翻译 2015-10-09 19:56:57 · 1608 阅读 · 0 评论 -
LintCode O(1)检测2的幂次
O(1)检测2的幂次原创 2015-10-09 19:07:42 · 1950 阅读 · 0 评论 -
LintCode 将整数A转换为B
将整数A转换为B如果要将整数A转换为B,需要改变多少个bit位? 样例 如把31转换为14,需要改变2个bit位。 (31)10=(11111)2 (14)10=(01110)2 挑战 你能想出几种方法?solution: 这题的意思就是比较A和B中不同位的个数及相异位的个数。因此,很容易想到异或操作,及相异为1,相同为0。因此可以先做C = A^B,然后在计算C的二进制表示中1的个数。原创 2015-10-09 18:36:21 · 1741 阅读 · 1 评论 -
LintCode 字符串查找
###字符串查找字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数。你的任务是实现这个函数。 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。 如果不存在,则返回 -1。样例 如果 source = “source” 和 target = “target”,返回 -1。 如果原创 2015-09-20 20:05:26 · 1152 阅读 · 0 评论 -
LintCode 乱序字符串
乱序字符串给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。 样例 对于字符串数组 [“lint”,”intl”,”inlt”,”code”] 返回 [“lint”,”inlt”,”intl”] 注意 所有的字符串都只包含小写字母分析: 很显然我们需要对字符串数组中的字符串进行排序, 用来原创 2015-09-20 22:13:05 · 596 阅读 · 0 评论 -
LintCode 比较字符串
比较字符串比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母样例 给出 A = “ABCD” B = “ACD”,返回 true给出 A = “ABCD” B = “AABC”, 返回 false注意 在 A 中出现的 B 字符串里的字符不需要连续或者有序。思路: 这个问题初看起来并没有什么思路,但是仔细想想还是比较简单的; 我们可以建立两个mapcla原创 2015-09-19 22:24:44 · 987 阅读 · 0 评论 -
LintCode 最长公共前缀
最长公共前缀 给k个字符串,求出他们的最长公共前缀(LCP)样例 在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 为 “A” 在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 为 “ABC”思路: 可以直接使用暴力算法求解class Solution {public: /** * @param strs: A list原创 2015-09-19 21:58:14 · 814 阅读 · 0 评论 -
LintCode 更新二进制位
更新二进制位给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串) 样例 给出N = (10000000000)2,M = (10101)2, i = 2, j = 6 返回 N = (10001010100)2 挑战 最少的操作次数是多少?solution: 题目的意思就是讲N的第i到j位换成M,因此,我们原创 2015-10-10 18:59:02 · 1667 阅读 · 0 评论 -
LintCode 不同的路径
不同的路径有一个机器人的位于一个M×N个网格左上角(下图中标记为’Start’)。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为’Finish’)。 问有多少条不同的路径? 1, 1 1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 2, 1 2, 2 2, 3 2, 4 2,5 2, 6 2,原创 2015-09-22 22:07:49 · 1603 阅读 · 0 评论 -
LintCode Single Number、落单的数
落单的数给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例 给出 [1,2,2,1,3,4,3],返回 4挑战 一次遍历,常数级的额外空间复杂度落单的数 II给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4挑战 一次遍历,常数级的额外空间复杂度落单的原创 2016-01-16 14:46:09 · 852 阅读 · 0 评论 -
Moore’s Voting Algorithm
Moore’s Voting AlgorithmMoore’s Voting Algorithm该算法是找出重复元素的最佳的算法,其时间复杂度为O(n)O(n)而空间复杂度为O(1)O(1)。原创 2015-12-26 21:29:42 · 1554 阅读 · 0 评论 -
LintCode 快速幂
LintCode 快速幂计算ana^{n} % b ,其中a,b和n都是32位的整数。样例 例如 2312^{31} % 3 = 2例如 1001000100^{1000} % 1000 = 0Solution: 显然不能先计算ana^{n}之后再取余。因为,ana^{n}会溢出。 因此,需要利用取模运算的乘法法则: (a * b) % p = (a % p * b % p) %原创 2015-12-21 21:43:14 · 2565 阅读 · 0 评论 -
LintCode 二进制表示
LintCode 二进制表示给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 32 个字符之内来精确地表示,则返回 “ERROR”。样例 n = “3.72”, 返回 “ERROR”.n = “3.5”, 返回 “11.1”.题目很简单,直接上代码吧public class BinaryRepresention { /** * 计算n的二进制表示原创 2015-12-25 21:12:27 · 1948 阅读 · 0 评论 -
LintCode majority numbe (主元素)
LintCode 主元素主元素 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。给出数组[1,1,1,1,2,2,2],返回 1 挑战 要求时间复杂度为O(n),空间复杂度为O(1) 。solution: 对于这个问题,有很多解决的方法。Method1. 最基本的解决方法 使用两个for循环计算出每个元素出现的次数, 如果该次数大于数组元素的二分之一就返回原创 2015-12-26 13:46:00 · 909 阅读 · 0 评论 -
LintCode Jump Game 跳跃游戏
跳跃游戏给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。样例 A = [2,3,1,1,4],返回 true.A = [3,2,1,0,4],返回 false.注意 这个问题有两个方法,一个是贪心和 动态规划。贪心方法时间复杂度为O(N)。动态规划方法的时间复杂度为为O(n^2)。我原创 2016-01-28 15:40:52 · 4801 阅读 · 1 评论 -
LintCode 两个字符串是变位词
题目:两个字符串是变位词 写出一个函数 anagram(s, t) 去判断两个字符串是否是颠倒字母顺序构成的 样例 给出 s=”abcd”,t=”dcab”,返回 true题解:这个题目比较简单,直接对字符串排序然后比较就可以了.class Solution {public: /** * @param s: The first string * @param b:原创 2015-09-19 21:53:43 · 1398 阅读 · 0 评论 -
LintCode 木材加工
木材加工有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。 样例 有3根木头[232, 124, 456], k=7, 最大长度为114. 注意 木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回 0 即可原创 2015-10-08 21:19:34 · 1331 阅读 · 0 评论 -
lintCode 删除元素
删除元素给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。 元素的顺序可以改变,并且对新的数组不会有影响。 样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4返回 4 并且4个元素的新数组为[0,0,0,2]思路:这题很简单,保持两个索引 i , j 就好了 用 i 来表示不相同的数字, j 来遍历数组code :class Solution {public:原创 2015-10-03 11:04:59 · 773 阅读 · 0 评论 -
LintCode 删除排序数组中的重复数字
删除排序数组中的重复数字给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。原创 2015-10-03 14:43:48 · 1438 阅读 · 0 评论 -
LintCode 二分法查找, 搜索插入位置 和 二维矩阵
1. 二分查找给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 样例 在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。 挑战 如果数组中的整数个数超过了2^32,你的算法是否会出错?solution: 注意如果出现重复的数字时我们需要放回第原创 2015-10-05 17:02:56 · 1431 阅读 · 0 评论 -
LintCode 两数之和
两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是1到n,不是以0开头。 样例 numbers=[2, 7, 11, 15], target=9 return [1, 2] 注意 你可以假设只有一组答案。solution:方法一:使用map容器来存储对应的原创 2015-10-04 15:17:28 · 2054 阅读 · 2 评论 -
LintCode 最长公共子串
最长公共子串给出两个字符串,找到最长公共子串,并返回其长度。 样例 给出A=“ABCD”,B=“CBCE”,返回 2 注意子串的字符应该连续的出现在原字符串中,这与子序列有所不同思路:记 m = A.strlen(); n = B.strlen(); 这题如果使用蛮力法来求解的话,我们需要判断B中的字符是否在A中出现,并且需要使用标记来记录是否连续的出现,其算法复杂度为O(n*m^2);原创 2015-10-03 10:53:10 · 502 阅读 · 0 评论 -
LintCode 删除排序数组中的重复数字 II
删除排序数组中的重复数字 II跟进删除排序数组中的重复数字: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。这题和删除重复的数据是一样的,唯一不同的是我们需要保存一个计数器来记录当前重复数据的个数code :class Solution {public: /** * @param原创 2015-10-03 15:09:52 · 2437 阅读 · 0 评论 -
LintCode 丢失的第一个正整数
丢失的第一个正整数 给出一个无序的正数数组,找出其中没有出现的最小正整数。 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间。Solution: 方法一:一种最直接的方法就是对数组进行排序然后再查找.class Solution {public: /**原创 2015-10-04 16:46:01 · 2252 阅读 · 0 评论 -
LintCode 数组划分
数组划分 给出一个整数数组nums和一个整数k。划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i,满足nums[i]大于等于k。 样例 给出数组nums=[3,2,2,1]和 k=2,返回 1 注意 你应该真正的划分数组nums,而不仅仅只是计算比k小的整数数,如果数组nums中的所有元素原创 2015-10-03 21:06:47 · 553 阅读 · 0 评论 -
LintCode 数组剔除元素后的乘积
本文转自:geeksforgeeks 数组剔除元素后的乘积给定一个整数数组A。 定义B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], 计算B的时候请不要使用除法。 样例 给出A=[1, 2, 3],返回 B为[6, 3, 2]solution: 如我们直接使用定义来求解的话,会重复计算很多的子乘积,因此我们可以使用数组来保存这些乘积在计算后面的翻译 2015-10-03 20:01:08 · 2144 阅读 · 0 评论 -
LintCode 合并排序数组
合并排序数组 合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]code class Solution {public: /** * @param A and B: sorted integer array A and B. * @return: A new sorte原创 2015-10-03 15:37:46 · 1269 阅读 · 0 评论 -
LintCode 合并排序数组 II
合并排序数组 II合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] 注意 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。方法一:开辟一个临时数组tmp来存放A中前面m个数字,那么就变成了归并tmp和B,把结果存放在Aclass Solut原创 2015-10-03 16:11:17 · 1597 阅读 · 0 评论 -
LintCode 三数之和
1. 三数之和给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。 样例 如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是: (-1, 0, 1) (-1, -1, 2) 注意 在三元组(a, b, c),要求a <= b <= c。结果不能包含重复的三元组。solution: 因为三元组的元素是按照递增原创 2015-10-05 12:19:10 · 4756 阅读 · 1 评论 -
LintCode x的平方根
x的平方根实现 int sqrt(int N) 函数,计算并返回 N 的平方根。 样例 sqrt(3) = 1 sqrt(4) = 2 sqrt(5) = 2 sqrt(10) = 3 挑战 O(log(x))solution: 如果使用蛮力法来求解的话,肯定是会超时的。因此,我们需要使用牛顿迭代法来求解这问题 牛顿迭代法: 对于给定一个函数f(x) = 0,的解为x0x_{0};原创 2015-10-05 20:23:06 · 1569 阅读 · 0 评论 -
LintCode 寻找旋转排序数组中的最小值
1 . 寻找旋转排序数组中的最小值假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假设数组中不存在重复的元素。 样例 给出[4,5,6,7,0,1,2] 返回 0solution: 本题可以直接使用蛮力法计算复杂度为O(n),但是使用蛮力法的话会失去本题的意思,因为数组是由排序数组旋转之后原创 2015-10-07 17:56:44 · 1040 阅读 · 0 评论 -
LintCode 第一个错误的代码版本
第一个错误的代码版本代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。 你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。 样例 给出 n=5 调用isBadVersion(3),得到false 调用isB原创 2015-10-08 20:28:40 · 1098 阅读 · 0 评论 -
链表环检测算法
给定两个LeetCode上的问题Linked List CycleGiven a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using extra space?Linked List Cycle IIGiven a linked list, return the node原创 2016-07-14 16:50:59 · 3633 阅读 · 0 评论