算法练习
LintCode:https://www.lintcode.com/problem/
CNwanku
在校大学生,天融信菜鸡实习生一枚。
展开
-
算法 简单 | 50. 数组剔除元素后的乘积
算法 简单 | 50. 数组剔除元素后的乘积题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组A。定义B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], 计算B的时候请不要使用除法。请输出B。样例1输入: A = [1, 2, 3]输出: [6, 3, 2]解析:B[0] = A[1] * A[2] = 6...原创 2020-02-06 13:17:05 · 459 阅读 · 1 评论 -
算法 中等 | 49. 字符大小写排序
算法 中等 | 49. 字符大小写排序题目描述样例1样例2java题解C++题解python题解题目描述给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。样例1输入: "abAcD"输出: "acbAD"样例2输入: "ABC"输出: "ABC"java题解public class Solution { public void sortLe...原创 2020-02-06 13:11:14 · 255 阅读 · 0 评论 -
算法 中等 | 48. 主元素 III
算法 中等 | 48. 主元素 III题目描述样例1样例2java题解C++题解python题解题目描述给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k样例1输入: [3,1,2,3,2,3,3,4,4,4] and k=3, 输出: 3.样例2输入: [1,1,2] and k=3, 输出: 1.java题解public class Solu...原创 2020-02-05 11:55:35 · 127 阅读 · 0 评论 -
算法 中等 | 47. 主元素 II
算法 中等 | 47. 主元素 II题目描述样例1样例2java题解C++题解python题解题目描述给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。样例1输入: [99,2,99,2,99,3,3], 输出: 99.样例2输入: [1, 2, 1, 2, 1, 3, 3], 输出: 1.java题解public class Solutio...原创 2020-02-05 11:50:36 · 114 阅读 · 0 评论 -
算法 简单 | 46. 主元素
算法 简单 | 46. 主元素题目描述样例1样例2java题解C++题解python题解题目描述给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例1输入: [1, 1, 1, 1, 2, 2, 2]输出: 1样例2输入: [1, 1, 1, 2, 2, 2, 2]输出: 2java题解用一个count变量来计数,和一个val来记录当前ma...原创 2020-02-05 11:45:34 · 199 阅读 · 0 评论 -
算法 中等 | 45. 最大子数组差
算法 中等 | 45. 最大子数组差题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。样例1输入:[1, 2, -3, 1]输出:6解释:子数组是 [1,2] 和[-3].所以答案是 6.样例2输入:[0,-1]输出:1解释...原创 2020-02-04 12:26:34 · 418 阅读 · 0 评论 -
算法 简单 | 44. 最小子数组
算法 简单 | 44. 最小子数组题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组,找到一个具有最小和的连续子数组。返回其最小和。样例1输入:[1, -1, -2, 1]输出:-3样例2输入:[1, -1, -2, 1, -4]输出:-6java题解定义两位数组第一个比较大小确定当前位置的元素能否为sunArray的起点第二个记录前 i...原创 2020-02-04 12:19:12 · 423 阅读 · 0 评论 -
算法 困难 | 43. 最大子数组 III
算法 困难 | 43. 最大子数组 III题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。样例1输入: List = [1,2,3]k = 1输出: 6说明: 1 + 2 + 3 = 6样例2输入:List = [-1,4...原创 2020-02-03 11:06:13 · 245 阅读 · 0 评论 -
算法 中等 | 42. 最大子数组 II
算法 中等 | 42. 最大子数组 II题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。样例1输入:[1, 3, -1, 2, -1, 2]输出:7解释:最大的子数组为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2]...原创 2020-02-03 10:58:39 · 241 阅读 · 0 评论 -
算法 简单 | 41. 最大子数组
算法 简单 | 41. 最大子数组题目描述样例1样例2java题解C++题解python题解题目描述给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例1输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大...原创 2020-02-02 12:42:28 · 292 阅读 · 0 评论 -
算法 中等 | 40. 用栈实现队列
算法 中等 | 40. 用栈实现队列题目描述样例1样例2解题思路java题解C++题解python题解题目描述正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例1输入: push(1) pop() ...原创 2020-02-01 10:08:39 · 124 阅读 · 0 评论 -
算法 简单 | 39. 恢复旋转排序数组
算法 简单 | 39. 恢复旋转排序数组题目描述样例java题解C++题解python题解题目描述给定一个旋转排序数组,在原地恢复其排序。(升序)样例Example1:[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]Example2:[6,8,9,1,2] -> [1,2,6,8,9]java题解import java.util.ArrayLis...原创 2020-01-31 10:31:03 · 135 阅读 · 0 评论 -
算法 中等 | 38. 搜索二维矩阵 II
算法 中等 | 38. 搜索二维矩阵 II题目描述样例1样例2java题解C++题解python题解题目描述写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例1输入:[[3,4]]target=3输出:1样例2输入: [ ...原创 2020-01-30 10:40:40 · 154 阅读 · 0 评论 -
算法 中等 | 36. 翻转链表 II
算法 中等 | 36. 翻转链表 II题目描述样例1样例2解题思路java题解C++题解python题解题目描述翻转链表中第m个节点到第n个节点的部分。样例1输入: 1->2->3->4->5->NULL, m = 2 and n = 4, 输出: 1->4->3->2->5->NULL.样例2输入: 1->2-&g...原创 2020-01-29 10:50:11 · 268 阅读 · 0 评论 -
算法 简单 | 35. 翻转链表
算法 简单 | 35. 翻转链表题目描述样例1样例2java题解C++题解python题解题目描述翻转一个链表。样例1输入: 1->2->3->null输出: 3->2->1->null样例2输入: 1->2->3->4->null输出: 4->3->2->1->nulljava题解publ...原创 2020-01-28 11:24:54 · 293 阅读 · 0 评论 -
算法 中等 | 34. N皇后问题 II
算法 中等 | 34. N皇后问题 II题目描述样例1样例2java题解C++题解python题解题目描述根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。样例1输入: n=1输出: 1解释:1:1样例2输入: n=4输出: 2解释:1:0 0 1 01 0 0 00 0 0 10 1 0 02:0 1 0 0 0 0 0 11 0...原创 2020-01-27 12:53:28 · 291 阅读 · 0 评论 -
算法 中等 | 33. N皇后问题
算法 中等 | 33. N皇后问题题目描述样例1样例2java题解C++题解python题解题目描述n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线)。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例1输入:1输出: ...原创 2020-01-26 10:58:17 · 434 阅读 · 0 评论 -
算法 中等 | 32. 最小子串覆盖
算法 中等 | 32. 最小子串覆盖题目描述样例1样例2样例3解题思路java题解C++题解python题解题目描述给定两个字符串 source 和 target.求 source 中最短的包含 target 中每一个字符的子串.样例1输入: source = "abc", target = "ac"输出: "abc"样例2输入: source = "adobecodebanc"...原创 2020-01-25 12:15:07 · 1927 阅读 · 0 评论 -
算法 中等 | 31. 数组划分
算法 中等 | 31. 数组划分题目描述样例1样例2java题解C++题解python题解题目描述给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。样例1输入:[],9输出:0样例2输入:[3,...原创 2020-01-24 10:29:44 · 337 阅读 · 0 评论 -
算法 中等 | 30. 插入区间
算法 中等 | 30. 插入区间题目描述样例1样例2解题思路java题解C++题解python题解题目描述给出一个无重叠的按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。样例1输入:(2, 5) into [(1,2), (5,9)]输出:[(1,9)]样例2输入:(3, 4) into [(1...原创 2020-01-23 11:09:57 · 97 阅读 · 0 评论 -
算法 中等 | 29. 交叉字符串
算法 中等 | 29. 交叉字符串题目描述样例1样例2样例3解题思路java题解C++题解python题解题目描述给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。样例1输入:"aabcc""dbbca""aadbbcbcac"输出:true样例2输入:"""""1"输出:false样例3输入:"aabcc""dbbca""aadbb...原创 2020-01-22 17:54:26 · 262 阅读 · 0 评论 -
算法 简单 | 28. 搜索二维矩阵
算法 简单 | 28. 搜索二维矩阵题目描述样例1样例2解题思路java题解C++题解python题解题目描述写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。样例1输入: [[5]],2输出: false样例解释: 没有包含,返回false。样例2输入: [ [1, 3,...原创 2020-01-21 10:00:26 · 297 阅读 · 0 评论 -
算法 简单 | 22. 列表扁平化
算法 简单 | 22. 列表扁平化题目描述样例1样例2样例3java题解C++题解python题解题目描述给定一个列表,该列表中的每个元素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。样例1输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1] 样例2输入: [1,2,[1,2]]输出:...原创 2020-01-20 10:46:01 · 511 阅读 · 0 评论 -
算法 困难 | 20. 骰子求和
算法 困难 | 20. 骰子求和题目描述样例1样例2java题解C++题解python题解题目描述扔 n 个骰子,向上面的数字之和为 S。给定 n,请列出所有可能的 S 值及其相应的概率。样例1输入:n = 1输出:[[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]解释:掷一次骰子,向上的数字和可能为1...原创 2020-01-19 11:43:47 · 491 阅读 · 0 评论 -
算法 中等 | 18. 子集 II
算法 中等 | 18. 子集 II题目描述样例1样例2java题解C++题解python题解题目描述给定一个可能具有重复数字的列表,返回其所有可能的子集。子集中的每个元素都是非降序的两个子集间的顺序是无关紧要的解集中不能包含重复子集样例1输入:[0]输出:[ [], [0]]样例2输入:[1,2,2]输出:[ [2], [1], [1,2,2],...原创 2020-01-18 14:11:14 · 116 阅读 · 0 评论 -
算法 中等 | 17. 子集
算法 中等 | 17. 子集题目描述样例1样例2java题解C++题解python题解题目描述给定一个含不同整数的集合,返回其所有的子集。子集中的元素排列必须是非降序的,解集必须不包含重复的子集。样例1输入:[0]输出:[ [], [0]]样例2输入:[1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2...原创 2020-01-17 14:25:37 · 135 阅读 · 0 评论 -
算法 中等 | 16. 带重复元素的排列
算法 中等 | 16. 带重复元素的排列题目描述样例1样例2解题思路java题解C++题解python题解题目描述给出一个具有重复数字的列表,找出列表所有不同的排列。样例1输入:[1,1]输出:[ [1,1]]样例2输入:[1,2,2]输出:[ [1,2,2], [2,1,2], [2,2,1]]解题思路使用排列式深度优先搜索算法。和没有重复元素的...原创 2020-01-16 14:10:47 · 196 阅读 · 0 评论 -
算法 中等 | 15. 全排列
算法 中等 | 15. 全排列题目描述样例1样例2解题思路java题解C++题解python题解题目描述给定一个数字列表,返回其所有可能的排列。样例1输入:[1]输出:[ [1]]样例2输入:[1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路使用深度优...原创 2020-01-15 13:24:59 · 298 阅读 · 0 评论 -
算法 简单 | 14. 二分查找
算法 简单 | 14. 二分查找题目描述样例1样例2样例3java题解C++题解python题解题目描述给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例1输入:[1,4,4,5,7,7,8,9,9,10],1输出: 0样例解释: 第一次出现在第0个位置。...原创 2020-01-14 14:00:41 · 125 阅读 · 0 评论 -
算法 简单 | 13. 字符串查找
算法 简单 | 13. 字符串查找题目描述样例1样例2java题解C++题解python题解题目描述对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。样例1输入: source = "source" , target = "target"输出:-1 样例解...原创 2020-01-14 13:46:03 · 196 阅读 · 0 评论 -
算法 中等 | 12. 带最小值操作的栈
算法 中等 | 12. 带最小值操作的栈题目描述样例解题思路java题解题解1题解2C++题解题解1题解2python题解题解1题解2题目描述实现一个栈, 支持以下操作:push(val) 将 val 压入栈pop() 将栈顶元素弹出, 并返回这个弹出的元素min() 返回栈中元素的最小值要求 O(1) 开销.样例输入: push(1) min() push(2)...原创 2020-01-13 17:45:53 · 338 阅读 · 0 评论 -
算法 中等 | 11. 二叉查找树中搜索区间
算法 中等 | 11. 二叉查找树中搜索区间题目描述样例1样例2解题思路java题解C++题解python题解题目描述给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。样例1输入:{5},6,10输出:[] 5它将被序列化为 {5}没有数字介于6和10之间样例2输入:{20,8,22,4,12},10,22输出:[12,20,22]...原创 2020-01-13 17:34:44 · 377 阅读 · 1 评论 -
算法 简单 | 9. Fizz Buzz 问题
算法 简单 | 9. Fizz Buzz 问题题目描述样例java题解C++题解python题解题目描述给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。样例比如 n = 15, 返回一...原创 2020-01-12 13:00:12 · 687 阅读 · 0 评论 -
算法 简单 | 8. 旋转字符串
算法 简单 | 8. 旋转字符串题目描述样例1样例2样例3样例4样例5java题解C++题解python题解题目描述给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。样例1输入: str="abcdefg", offset = 3输出: str = "efgabcd" 样例解释: 注意是原地旋转,即str旋转后为"efgabcd"样...原创 2020-01-12 12:49:33 · 341 阅读 · 0 评论 -
算法 中等 | 7. 二叉树的序列化和反序列化
算法 中等 | 7. 二叉树的序列化和反序列化题目描述样例1样例2java题解C++题解python题解题目描述设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。样例1输入:{3,9,...原创 2020-01-11 13:30:29 · 178 阅读 · 0 评论 -
算法 简单 | 6. 合并排序数组 II
算法 简单 | 6. 合并排序数组 II题目描述样例1样例2java题解python题解题目描述合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。样例1输入: A=[1], B=[1]输出:[1,1] 样例解释: 返回合并后的数组。样例2输入: A=[1,2,3,4], B=[2,4,5,6]输出: [1,2,2,3,4,4,5,6] 样例解释: 返回合并后...原创 2020-01-11 13:19:07 · 171 阅读 · 0 评论 -
算法 中等 | 5. 第k大元素
算法 中等 | 5. 第k大元素题目描述样例1样例2java题解题解1题解2C++题解题解1题解2python题解题目描述在数组中找到第 k 大的元素。样例1输入:n = 1, nums = [1,3,4,2]输出:4样例2n = 3, nums = [9,3,2,4,8]输出:4java题解题解1九章算法强化班里讲过的标准 Parition 模板。class S...原创 2020-01-10 13:17:20 · 140 阅读 · 0 评论 -
算法 中等 | 4. 丑数 II
算法 中等 | 4. 丑数 II题目描述样例1样例2java题解题解1题解2C++题解python题解题目描述设计一个算法,找出只含素因子2,3,5 的第 n 小的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…样例1输入:9输出:10样例2输入:1输出:1java题解题解1class Solution { /** *...原创 2020-01-10 12:59:09 · 212 阅读 · 0 评论 -
算法 中等 | 3. 统计数字
中等 | 3. 统计数字题目描述样例1样例2java题解C++题解python题解题目描述计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。样例1输入:k = 1, n = 1输出:1解释:在 [0, 1] 中,我们发现 1 出现了 1 次 (1)。样例2输入:k = 1, n = 12输出:5解释:在 [0, 1, 2, 3, 4, 5...原创 2020-01-09 20:51:06 · 170 阅读 · 0 评论 -
算法 简单 | 2. 尾部的零
简单 | 2. 尾部的零题目描述样例1样例2java题解C++题解python题解题目描述设计一个算法,计算出n阶乘中尾部零的个数。样例1输入: 11输出: 2样例解释: 11! = 39916800, 结尾的0有2个。样例2输入: 5输出: 1样例解释: 5! = 120, 结尾的0有1个。java题解可以将每个数拆分成其素因子的乘积,可以发现,0是由2*5产生的,...原创 2020-01-09 20:23:19 · 90 阅读 · 0 评论