lintcode
Sinb妃
这个作者很懒,什么都没留下…
展开
-
lintcode167. 链表求和
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例样例 1:输入: 7->1->6->null, 5->9->2->null输出: 2->1->9->null 样例解释: 617 + 295 = 912, 912 转...原创 2019-09-27 19:16:39 · 146 阅读 · 0 评论 -
lintcode 166. 链表倒数第n个节点
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。样例Example 1: Input: list = 3->2->1->5->null, n = 2 Output: 1Example 2: Input: list = 1->2->3->null, n = 3 Output: 1/** * Definition of Lis...原创 2019-09-27 19:33:15 · 81 阅读 · 0 评论 -
lintcode 902. BST中第K小的元素
给一棵二叉搜索树,写一个 KthSmallest 函数来找到其中第 K 小的元素。样例样例 1:输入:{1,#,2},2输出:2解释: 1 \ 2第二小的元素是2。样例 2:输入:{2,1,3},1输出:1解释: 2 / \1 3第一小的元素是1。挑战如果这棵 BST 经常会被修改(插入/删除操作)并且你需要很快速的找到第 K 小的元素呢?你会如何优化这个 KthSmallest 函数?注意事项你可以假设 k 总是有效的, 1 ≤ k ≤ 树的总节原创 2020-05-08 19:54:52 · 172 阅读 · 0 评论 -
lintcode 564. 组合总和 IV
给出一个都是正整数的数组 nums,其中没有重复的数。从中找出所有的和为 target 的组合个数。样例样例1输入: nums = [1, 2, 4] 和 target = 4输出: 6解释:可能的所有组合有:[1, 1, 1, 1][1, 1, 2][1, 2, 1][2, 1, 1][2, 2][4]样例2输入: nums = [1, 2] 和 target =...原创 2020-05-08 11:45:36 · 200 阅读 · 0 评论 -
lintcode 652. 因式分解 dfs
一个非负数可以被视为其因数的乘积。编写一个函数来返回整数 n 的因数所有可能组合。样例样例1输入:8输出: [[2,2,2],[2,4]]解释: 8 = 2 x 2 x 2 = 2 x 4样例2输入:1 输出: []注意事项组合中的元素(a1,a2,...,ak)必须是非降序。(即,a1≤a2≤...≤ak)。结果集中不能包含重复的组合。思路:一个简单的dfs,假设a...原创 2020-05-06 15:36:11 · 468 阅读 · 0 评论 -
lintcode657. Insert Delete GetRandom O(1)
设计一个数据结构实现在平均 O(1) 的复杂度下执行以下所有的操作。insert(val): 如果这个元素不在set中,则插入。remove(val): 如果这个元素在set中,则从set中移除。getRandom: 随机从set中返回一个元素。每一个元素返回的可能性必须相同。样例// 初始化空集setRandomizedSet randomSet = new RandomizedSe...原创 2020-04-30 15:24:03 · 128 阅读 · 0 评论 -
lintcode873. 模拟松鼠
给定一个二维网格, 其中有一棵树, 一个松鼠和几枚坚果. 松鼠同一时间内最多只能携带一枚坚果. 松鼠可以向上, 下, 左, 右的相邻的方格移动.请问, 松鼠要把所有的坚果送到树下, 最少需要移动多少格距离样例样例 1:输入: height = 5, width = 7, treePosition = [2, 2], squirrelPosition = [4, 4], nut...原创 2020-04-23 12:25:11 · 193 阅读 · 0 评论 -
lintcode814. 无向图中的最短路径 bfs
给定一个无向图, 图中所有边的长度为1, 再选定图中的两个节点, 返回这两个节点之间最短的路径的长度.样例样例 1:输入: graph = {1,2,4#2,1,4#3,5#4,1,2#5,3}, node1 = 3, node2 = 5输出: 1解释: 1------2 3 \ | | \ | | \ | | \ ...原创 2020-04-22 20:48:16 · 329 阅读 · 0 评论 -
lintcode791. 合并数字
给出n个数,现在要将这n个数合并成一个数,每次只能选择两个数a,b合并,每次合并需要消耗a+b的能量,输出将这n个数合并成一个数后消耗的最小能量。样例样例 1: 输入: [1,2,3,4] 输出: 19 解释: 合并1和2,代价为3, 合并后为 [3,4,3]. 合并3,3, 代价是6, 合并后为 [6,4]. 合并最后两个,代价为10, 总最小代价为19样例 2:...原创 2020-04-22 17:30:06 · 292 阅读 · 0 评论 -
lintcode 785. 最大权值和路径 动态规划
有一个机器人位于一个 m × n 个网格的右上角。机器人每一时刻只能向下或者向左移动一步。机器人试图达到网格的左下角。每个网格上有一个数字权值,机器人希望它走到左下角的路径权值和最大。问这个最大路径权值和是多少?样例例1:输入:[[1,2,3,4],[3,5,6,7],[9,10,1,2],[4,4,5,5]]输出: 45.解释:The path is [4,7,6,...原创 2020-04-22 16:50:53 · 394 阅读 · 0 评论 -
lintcode 793. 多个数组的交集
给出多个数组,求它们的交集。输出他们交集的大小。样例样例 1: 输入: [[1,2,3],[3,4,5],[3,9,10]] 输出: 1 解释: 只有3出现在三个数组中。样例 2: 输入: [[1,2,3,4],[1,2,5,6,7][9,10,1,5,2,3]] 输出: 2 解释: 交集是[1,2].注意事项The total number of al...原创 2020-04-18 16:02:33 · 213 阅读 · 0 评论 -
lintcode 779. 广义缩写dfs
请完成一个能够给出 wordword 的所有“缩写”的函数(给出任意一种排列即可)样例例1:输入: word = "word", 输出: ["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]例2:输入...原创 2020-04-18 15:55:02 · 182 阅读 · 0 评论 -
lintcode 782. 与或和
给 n 个非负整数,请你求出最大或和,最小或和,最大与和,最小与和这四个数之和。样例例1:输入:n = 3nums = [1, 2, 3]输出: 7解释:最大或和:3,最小或和:1,最大与和:3,最小与和:0。答案:3 + 1 + 3 + 0 = 7。例2:输入:n = 3nums = [0, 0, 1]输出: 2解释:最大或和:1,最小或和:0,最大与和:...原创 2020-04-18 15:24:06 · 175 阅读 · 0 评论 -
lintcode 778. 太平洋和大西洋的水流 dfs
给定一个m×n的非负矩阵代表一个大洲,矩阵的每个单元格的值代表此处的地形高度,矩阵的左边缘和上边缘是“太平洋”,下边缘和右边缘是“大西洋”。水流只能在四个方向(上,下,左或右)从一个单元格流向另一个海拔和自己相等或比自己低的单元格。找到那些从此处出发的水既可以流到“太平洋”,又可以流向“大西洋”的单元格的坐标。样例例1:输入:matrix = [[1,2,2,3,5],[3,2,...原创 2020-04-18 13:52:25 · 139 阅读 · 0 评论 -
lintcode 774. 重复
所有的DNA由一系列缩写的核苷酸 A, C, G 和 T组成.比如; “ACGAATTCCG”. 在研究 DNA 时, 有时候鉴别出 DNA 中的重复序列是很有用的.写一个函数来找到所有在 DNA 中出现超过一次且长度为 10个字母 的序列(子串).样例例1:输入:"AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出:["AAAAACCCCC","CCCCCA...原创 2020-04-18 10:31:48 · 156 阅读 · 0 评论 -
lintcode 742. 数字整除数
一个数字整除数是指一个可以被其中包含的每个数字整除的数.举个例子, 128是一个数字整除数, 因为 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.并且, 数字整除数不允许包含数字 0.给出数字取值的上下限, 输出一个包含所有数字整除数的列表, 包括边界.样例样例1输入: left = 1, right = 22输出: [1, 2, 3, ...原创 2020-04-17 20:47:12 · 223 阅读 · 0 评论 -
lintcode 772. 错位词分组
给一字符串数组, 将 错位词(指相同字符不同排列的字符串) 分组样例例1:输入:["eat","tea","tan","ate","nat","bat"]输出:[["ate","eat","tea"], ["bat"], ["nat","tan"]]例2:输入:["eat","nowhere"]输出:[["eat"], ["nowhere"]]注意事项所有的输入...原创 2020-04-17 20:34:37 · 164 阅读 · 0 评论 -
lintcode 761. 最小子集
给一 非负 整数数组. 取数组中的一部分元素, 使得它们的和大于数组中其余元素的和, 求出满足条件的元素数量最小值.样例例1:输入: nums = [3, 1, 7, 1], 输出: 1例2:输入: nums = [2, 1, 2], 输出: 2class Solution {public: /** * @param arr: an array of n...原创 2020-04-17 20:02:42 · 185 阅读 · 0 评论 -
lintcode 751. 约翰的生意 线段树
在一条数轴上,有n个城市,编号从0 ~ n – 1 , 约翰打算在这n个城市做点生意,他对Armani的一批货物感兴趣,每个城市对于这批货物都有一个价格prices[i]。对于城市x,约翰可从城市编号为[x - k, x + k]购买货物,然后卖到城市x,问约翰在每个城市最多能赚到多少钱?样例样例1输入: prices = [1, 3, 2, 1, 5] 和 k = 2输出: [0, 2...原创 2020-04-17 18:50:18 · 176 阅读 · 0 评论 -
lintcode588. 划分和相等的子集
给一 只含有正整数 的 非空 数组, 找到这个数组是否可以划分为 两个 元素和相等的子集。样例例1:输入: nums = [1, 5, 11, 5], 输出: true解释:two subsets: [1, 5, 5], [11]例2:输入: nums = [1, 2, 3, 9], 输出: false注意事项所有数组元素不超过100.数组大小不超过200.思路:先...原创 2020-04-17 10:35:19 · 293 阅读 · 0 评论 -
lintcode724. 最小划分
给出一个正整数数组,写一个程序把这个整数数组分成S1跟S2两部分,使S1中的和跟S2中的和的差的绝对值最小。换句话讲,如果有一个一个整数数组 S 有 n 个数,如果Subset1有 m 个数,Subset2必须有 n-m 个数并且 abs(sum(Subset1) – sum(Subset2)) 应该最小样例样例1输入: nums = [1, 6, 11, 5]输出: 1解释: Su...原创 2020-04-16 23:04:38 · 662 阅读 · 0 评论 -
lintcode 570. 寻找丢失的数 II
给一个由 1 - n 的整数随机组成的一个字符串序列,其中丢失了一个整数,请找到它。样例样例1输入: n = 20 和 str = 19201234567891011121314151618输出: 17解释:19'20'1'2'3'4'5'6'7'8'9'10'11'12'13'14'15'16'18样例2输入: n = 6 和 str = 56412输出: 3解释:5'...原创 2020-04-16 20:33:55 · 159 阅读 · 0 评论 -
lintcode735. 替换为右侧最大值
给一整数数组, 用当前元素之后数组中的最大元素来替换当前元素(右侧的最大元素). 因为最后一个元素的右边没有元素了, 所以用 -1 来替换这个值. 举个例子, 如果数组为 [16,17,4,3,5,2], 那么它就需要修改为 [17,5,5,5,2,-1].样例样例1输入: nums = [16, 17, 4, 3, 5, 2]输出: [17, 5, 5, 5, 2, -1]样例2...原创 2020-04-16 16:09:35 · 128 阅读 · 0 评论 -
lintcode728. 3个不同的因子
给一 正整数 n (1 <= n <= 10^18). 判断这个数是否正好只有 3 个不同的因子, 如果正好有 3 个不同的因子就返回 true, 否则返回 false样例样例1输入: n = 9输出: true解释:9 恰好有3个因子: 1, 3, 9, 所以返回 true.样例2输入: n = 10输出: false解释:10 有4个因子: 1, 2, 5...原创 2020-04-16 15:56:52 · 643 阅读 · 0 评论 -
lintcode 680. 分割字符串 dfs
给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果样例样例1输入: "123"输出: [["1","2","3"],["12","3"],["1","23"]]样例2输入: "12345"输出: [["1","23","45"],["12","3","45"],["12","34","5"],["1","2","...原创 2020-04-16 15:22:00 · 231 阅读 · 0 评论 -
lintcode 663. 墙和门 迷宫问题bfs
您将获得一个使用这三个可能值初始化的 m×n 2D 网格。-1 - 墙壁或障碍物。0 - 门。INF - Infinity是一个空房间。我们使用值 2 ^ 31 - 1 = 2147483647 来表示INF,您可以假设到门的距离小于 2147483647。在代表每个空房间的网格中填入到距离最近门的距离。如果不可能到达门口,则应填入 INF。样例样例1输入:[[214748364...原创 2020-04-16 14:14:28 · 219 阅读 · 0 评论 -
lintcode563. 背包问题 V
给出 n 个物品, 以及一个数组, nums[i] 代表第i个物品的大小, 保证大小均为正数, 正整数 target 表示背包的大小, 找到能填满背包的方案数。每一个物品只能使用一次样例给出候选物品集合 [1,2,3,3,7] 以及 target 7结果的集合为:[7][1,3,3]返回 2class Solution {public: /** * @par...原创 2020-04-16 11:57:56 · 159 阅读 · 0 评论 -
lintcode1728. X of a Kind in a Deck of Cards
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。样例示例1输入: [1,2,3,4,4,3,2,1]输出: true解释: 可行的分组 [1,1],[2,2],[3,3],[4,4]示例2:输入: [1...原创 2020-04-15 19:44:06 · 143 阅读 · 0 评论 -
lintcode665. 平面范围求和 -不可变矩阵
给一 二维矩阵,计算由左上角 (row1, col1) 和右下角 (row2, col2) 划定的矩形内元素和.样例样例1输入:[[3,0,1,4,2],[5,6,3,2,1],[1,2,0,1,5],[4,1,0,1,7],[1,0,3,0,5]]sumRegion(2, 1, 4, 3)sumRegion(1, 1, 2, 2)sumRegion(1, 2, 2, 4)输出:...原创 2020-04-15 14:13:36 · 159 阅读 · 0 评论 -
lintcode744. 前K个偶数长度的回文数和
给一整数 k, 得出前 k 个偶数长度的回文数和. 这里的偶数长度是指一个数字的位数为偶数.样例样例1输入: k = 3输出: 66解释:11 + 22 + 33 = 66 (前三个偶数长度的回文数和)样例2输入: k = 10输出: 1496解释:11 + 22 + 33 + 44 + 55 + 66 + 77 + 88 + 99 + 1001 = 1496思...原创 2020-04-15 13:24:01 · 487 阅读 · 0 评论 -
lintcode750. 传送门 bfs
Chell是Valve Corporation开发的Portal视频游戏系列中的主角。一天,她掉进了一个迷宫。迷宫可以看作是一个大小为n x m二维字符数组。它有4种房间。'S’代表Chell从哪开始(只有一个起点)。‘E’代表迷宫的出口(当chell抵达时,她将离开迷宫,该题目可能会有多个出口)。’*‘代表这个房间Chell可以经过。’#'代表一堵墙,Chell不能经过墙。她可以每次上下左右...原创 2020-04-15 13:09:27 · 243 阅读 · 0 评论 -
lintcode740. 零钱兑换 2 完全背包
给出不同面值的硬币以及总金额. 试写一函数来计算构成该总额的组合数量. 你可以假设每一种硬币你都有无限个.样例样例1输入: amount = 10 和 coins = [10] 输出: 1样例2输入: amount = 8 和 coins = [2, 3, 8]输出: 3解释:有3种方法:8 = 88 = 3 + 3 + 28 = 2 + 2 + 2 + 2注意事项...原创 2020-04-15 10:26:49 · 110 阅读 · 0 评论 -
lintcode 700. 杆子分割 完全背包
给一个 n 英寸长的杆子和一个包含所有小于 n 的尺寸的价格. 确定通过切割杆并销售碎片可获得的最大值.样例样例1输入:[1, 5, 8, 9, 10, 17, 17, 20]8输出:22解释:长度 | 1 2 3 4 5 6 7 8 --------------------------------------------价格 | 1...原创 2020-04-14 22:37:39 · 177 阅读 · 0 评论 -
lintcode 669. 换硬币 完全背包
给出不同面额的硬币以及一个总金额. 写一个方法来计算给出的总金额可以换取的最少的硬币数量. 如果已有硬币的任意组合均无法与总金额面额相等, 那么返回 -1.样例样例1输入:[1, 2, 5]11输出: 3解释: 11 = 5 + 5 + 1样例2输入: [2]3输出: -1注意事项你可以假设每种硬币均有无数个总金额不会超过10000硬币的种类数不会超过500, ...原创 2020-04-14 20:51:53 · 276 阅读 · 0 评论 -
lintcode 562. 背包问题 IV完全背包
给出 n 个物品, 以及一个数组, nums[i]代表第i个物品的大小, 保证大小均为正数并且没有重复, 正整数 target 表示背包的大小, 找到能填满背包的方案数。每一个物品可以使用无数次样例样例1输入: nums = [2,3,6,7] 和 target = 7输出: 2解释:方案有: [7][2, 2, 3]样例2输入: nums = [2,3,4,5] 和 t...原创 2020-04-14 20:44:58 · 263 阅读 · 0 评论 -
lintcode693. 移掉K位数字
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。样例Example 1:Input: num = "1432219", k = 3Output: "1219"Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the small...原创 2020-04-14 18:22:06 · 157 阅读 · 0 评论 -
lintcode834. 移除多余字符
给定一个字符串s由小写字符组成,移除多余的字符使得每个字符只出现一次。你必须保证结果是字典序是最小的合法字符串。样例样例1输入: s = "bcabc"输出: "abc"样例2输入: s = "cbacdcbc"输出: "acdb"思路:先遍历记录每一个字符出现的次数,如果该字符已经添加进去过了,则不再添加,因为添加进去后已经前面该部分的最小字符序。若还没添加进去,则和已添加...原创 2020-04-14 18:06:11 · 145 阅读 · 0 评论 -
lintcode 1578. A的数量
给一个带有 BACD 模式的字符串,* 意味着前面的字符在字符串中可以显示 0次 或 多次。计算字符 ‘A’ 出现的次数。样例样例 1:输入: s = "BBAACCDDD"输出: 2样例 2:输入: s = "BBCDD"输出: 0样例 3:输入: s = "AAA"输出: 3挑战如果字符串太大而无法全部读入到内存中该怎么办?注意事项为了保证时间复杂度小于O(...原创 2020-04-14 17:34:09 · 261 阅读 · 0 评论 -
lintcode182. 删除数字
给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。找到删除 k 个数字之后的最小正整数。N <= 240, k <= N样例样例 1:输入: A = "178542", k = 4输出:"12"样例 2:输入: A = "568431", k = 3输出:"431"思路:从前往后不比...原创 2020-04-14 16:23:24 · 175 阅读 · 0 评论 -
lintcode107. 单词拆分 I动态规划
给定字符串 s 和单词字典 dict,确定 s 是否可以分成一个或多个以空格分隔的子串,并且这些子串都在字典中存在。样例样例 1: 输入: "lintcode", ["lint", "code"] 输出: true样例 2: 输入: "a", ["a"] 输出: true class Solution {public: /* * @param s: ...原创 2020-04-14 13:25:12 · 427 阅读 · 0 评论