LeetCode
cbl12321
这个作者很懒,什么都没留下…
展开
-
【LeetCode 773】滑动谜题
/*难度:困难在一个2x3的板上有5块砖瓦,用数字1~5来表示,以及一块空缺用0表示。一次移动定义为选择0与一个相邻的数字进行交换。最终当板上的结果是 [[1,2,3], [4,5,0]]时,谜板被揭开。给出一个初始状态,返回最少可以通过多少次移动揭开谜板,如果解不开,则返回-1*/ class Node773 { var code: Int var connected = [Int]() //与本节点有连线的其他节点 init(code: Int) { self.code = c原创 2021-07-30 10:31:36 · 148 阅读 · 0 评论 -
【LeetCode 279】完全平方数
/*难度:中等给定正整数n,找到若干完全平方数,使得它们的和等于n,并且完全平方数的个数最少。示例:输入 n=12输出 312 = 4 + 4 + 4输入 n=13输出 213 = 4 + 9假定:1 <= n <= 10000*/ extension Daily { static func test_leetcode279() { let n = 13 let res = Daily.leetcode279(n) print("最终结果 \(res)原创 2021-07-15 15:30:34 · 123 阅读 · 0 评论 -
【LeetCode 494】利用 +/- 使表达式成立
/*给定一个整数数组和一个整数target,向数组中的每个整数前添加 + 或者 - ,然后串联起来所有整数,可以构造一个表达式,返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目示例:输入 nums=[1,1,1,1,1], target=3输出 51 =< nums.length <= 200 =< nums[i] <= 10000 =< sum(nums[i]) <= 1000-1000 <= target <= 1原创 2021-07-15 15:24:16 · 104 阅读 · 0 评论 -
【LeetCode】罗马数转阿拉伯数
/*难度:简单罗马数转阿拉伯数罗马数字字符及定义:I 1V 5X 10L 50C 100D 500M 1000通常大数出现在小数左边;但也有特例: I可以出现在V、X左边分别表示4、9, X可以出现在L、C左边分别表示40、90, C可以出现在D、M左边分别表示400、900示例:输入: "LVIII"输出: 58解释: L = 50, V= 5, III = 3.示例:输入: "MCMXCIV"输出: 1994解释: M = 1000, CM = 900,原创 2021-07-15 15:22:37 · 95 阅读 · 0 评论 -
【LeetCode852】求山峰数组的峰顶
/*山峰数组arr,长度为n,满足以下性质: 存在索引为p的数字,使得 arr[0] < arr[1] < ... < arr[p] > arr[p+1] > ... > arr[n-1]。给定一个山峰数组,请求出其峰顶,要求时间复杂度为O(logn)。注:假定给定的数组的一定是山峰数组*/ extension Daily { static func test_leetcode852() { let nums = [1,2,4,6,9,13, 21, 2原创 2021-07-15 15:12:43 · 262 阅读 · 0 评论 -
【LeetCode 451】根据字符出现的频率排序
/*难度:中等给定一个字符串,请将字符串里的字符按照出现的频率降序排列。输出结果中,相同的字符必须放在一起。英文字母区分大小写示例 1:输入:tree输出:eert 或者 eetr*/ extension Daily { static func test_leetcode451() { let cases = [ "tree", "cccaaa", "Aabb", ] for string in cases { print("输入:\(stri原创 2021-07-15 15:07:17 · 123 阅读 · 0 评论 -
【LeetCode 815】公交路线
/*难度:困难给定一个数组routes,表示一系列公交线路,其中每个routes[i]表示一条公交线路,第i辆公交车将会在上面循环行驶。例如:routes[0]=[1,5,7]表示第0辆公交车会一直按序列1->5->7->1->5->7->...这样的车站路线行驶。现在从source车站出发(初始时不在公交车上),要前往target车站,且期间仅可乘坐公交车。求出最少乘坐的公交车数量,如果不可能到达终点车站,返回-1.示例:输入:routes=[[1,2.原创 2021-07-15 11:35:55 · 138 阅读 · 0 评论 -
【LeetCode 1442】形成两个异或相等数组的三元组数目
/* 难度:中等 形成两个异或相等数组的三元组数目 给你一个整数数组arr,现需要从数组中取三个下标i,j,k, 其中0<=i<j<=k<arr.length a,b定义如下, a = arr[i] ^ arr[i+1] ^ ... ^ arr[j-1] b = arr[j] ^ arr[j+1] ^ ... ^ arr[k] 请返回能够令a==b成立的三元组(i,j,k)的数目 示例1: 输入:arr = [2,3,1,6,7] 输出:4 解释: (0,1,原创 2021-07-14 09:51:00 · 145 阅读 · 0 评论 -
【LeetCode 477】汉明距离总和
/*难度:中等计算一个数组中,任意两个数之间的汉明距离的总和。两个整数之间的汉明距离是指这两个数的二进制位不同的位置的数目。注意:数组的元素范围:[0, 10^9]; 数组的长度不超过10^4*/ extension Daily { static func test_leetCode477() { let x = 1 let y = 4 let result = Daily.leetCode477(x: x, y: y) print("result: \(result)")原创 2021-07-14 09:06:59 · 85 阅读 · 0 评论 -
【LeetCode 518】零钱兑换 II
/*难度:中等给定不同面额的硬币和一个总金额,写出函数来计算可以凑成总金额的硬币组合数。假设每种面额的硬币有无限个。示例:输入 coins=[1,2,5], amount=5输出 45=5; 5=2+2+1; 5=2+1+1+1; 5=1+1+1+1+1假定: 0 <= amount <= 5000; 1 <= 面额 <= 5000 硬币种类不超过500种; 结果符合32位符号整数*/ extension Daily { static func原创 2021-07-13 16:47:32 · 73 阅读 · 0 评论 -
【LeetCode 1049】最后一块石头的重量 II
/*难度:中等有一堆石头,每块石头的重量都是正整数,每一回合,从中选出任意两块石头: 如果重量不等,则将较轻的石头粉碎,然后将两者重量之差赋给较重的那块石头;如果重量相等,则两块都粉碎,最后,最多只会剩下一块石头,求此石头最小的可能重量。如果没有石头剩下,则返回0。示例:输入:[2,7,4,1,8,1]输出:1解释:组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],组合 2 和 1,得到 1,所以数组转原创 2021-07-13 10:51:36 · 77 阅读 · 0 评论 -
【LeetCode 1833】雪糕的最大数量
/*难度:中等夏日炎炎,小男孩Tony想买一些雪糕消消暑。商店中新到n支雪糕,用长度为n的数组costs表示雪糕的定价,其中costs[i]表示第i支雪糕的现金价格。Tony一共有coins现金可以用于消费,他想要买尽可能多的雪糕。请计算Tony可以买到的雪糕的最大数量。Tony可以按任意顺序购买雪糕。示例:输入:costs=[1,3,2,4,1], coins=7输出:4示例:输入:costs=[10,6,8,7,7,8], coins=5输出:0示例:输入:costs=原创 2021-07-13 10:49:04 · 164 阅读 · 0 评论 -
【LeetCode 451】根据字符出现频率排序
/*难度:中等给定一个字符串,请将字符串里的字符按照出现的频率降序排列。输出结果中,相同的字符必须放在一起。英文字母区分大小写示例 1:输入:tree输出:eert 或者 eetr*/ extension Daily { static func test_leetcode451() { let cases = [ "tree", "cccaaa", "Aabb", ] for string in cases { print("输入:\(str原创 2021-07-13 10:45:39 · 113 阅读 · 0 评论 -
【LeetCode 1035】不相交的线
在两条独立的水平线上按给定顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字nums1[i]和nums2[j]的直线,这些直线需要满足:1)nums1[i] == nums2[j];2)绘制的直线不予任何其他连线(非水平线)相交;注意:连线即使在端点也不能相交;每个数字智能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例:输入:nums1 = [1, 4, 2], nums2 = [1, 2, 4]输出:2static func nonInte原创 2021-07-13 10:42:54 · 362 阅读 · 0 评论 -
【LeetCode 1711】大餐计数
/*难度:中等大餐是指恰好包含两道不同餐品的一餐,其美味程度之和等于2的幂。你可以搭配任意两道餐品做一顿大餐。给定一个整数数组,其中第i项是第i道餐品的美味程度,返回你可以用数组中的餐品做出的不同大餐的数量。结果需要对 10^9 + 7 取余。只要餐品下标不同就可以认为是不同的餐品,即便美味程度相同。示例 1:输入:deliciousness=[1,3,5,7,9]输出:4解释:(1,3), (1,7),(3,5),(7,9)示例 2:输入:deliciousness=[1,1原创 2021-07-13 10:25:45 · 133 阅读 · 0 评论