LeetCode
LeetCode
违章洞悟
自己有海,不赶浪潮。
展开
-
LeetCode 321.拼接最大数
给定长度分别为m和n的两个数组,其元素由0-9构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n)个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大数的长度为k的数组。说明: 请尽可能地优化你算法的时间和空间复杂度。示例1:输入:nums1 = [3, 4, 6, 5]nums2 = [9, 1, 2, 5, 8, 3]k = 5输出:[9, 8, ...原创 2020-12-02 09:10:27 · 204 阅读 · 0 评论 -
LeetCode 493 翻转对
给定一个数组nums,如果且我们就将称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。示例 1:输入: [1,3,2,3,1]输出: 2示例 2:输入: [2,4,3,5,1]输出: 3注意:给定数组的长度不会超过50000。输入数组中的所有数字都在32位整数的表示范围内。通过次数9,591提交次数32,034前置知识:归并排序、逆序数、分治公司:阿里、百度、字节思路1:在归并排序的过程中,假设对于数组而言,我们已经分别求出了子数组与的...原创 2020-11-28 10:14:04 · 541 阅读 · 0 评论 -
LeetCode 164. 最大间距
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。请尝试在线性时间复杂度和空间复杂度的条件下解决此..原创 2020-11-27 15:55:13 · 179 阅读 · 0 评论 -
LeetCode 204. 计数质数
统计所有小于非负整数n的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 10^6通过次数92,096提交次数253,83思路:不建议采用暴力法,可以采用筛选排除法,先使用一个O(n)的数组来存储该数是否为质数,初始化为true,筛选之后可以将不是质数的改为false,最后数..原创 2020-12-03 09:50:30 · 102 阅读 · 0 评论 -
LeetCode 976. 三角形的最大周长
给定由一些正数(代表长度)组成的数组A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8提示:3 <= A.length <= 100001 <= A[i] <= 10^6通过次数30,487提交次数51,923...原创 2020-11-29 12:45:26 · 168 阅读 · 0 评论 -
LeetCode 1370. 上升下降字符串
给你一个字符串s,请你根据下面的算法重新构造字符串:从 s中选出 最小的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最小的字符,且该字符比上一个添加的字符大,将它 接在结果字符串后面。重复步骤 2 ,直到你没法从 s中选择字符。从 s中选出 最大的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最大的字符,且该字符比上一个添加的字符小,将它 接在结果字符串后面。重复步骤 5,直到你没法从 s中选择字符。重复步骤 1 到 6 ,直到 s中...原创 2020-11-27 16:08:18 · 138 阅读 · 0 评论 -
LeetCode 621. 任务调度器
给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = ["A","A","A","B","B".原创 2020-12-05 10:27:59 · 141 阅读 · 0 评论 -
LeetCode 659.分割数组为连续子序列
给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。如果可以完成上述分割,则返回 true ;否则,返回 false 。示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列: 1, 2, 33, 4, 5示例 2:输入: [1,2,3,3,4,4,5,5]输出: True解释:你可以分割出这样两个连续子序列: 1, 2, 3, 4, 5.原创 2020-12-04 09:21:44 · 147 阅读 · 1 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums ...原创 2020-12-01 10:32:59 · 213 阅读 · 0 评论 -
LeetCode 767.重构字符串
给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""注意:S 只包含小写字母并且长度在[1, 500]区间内。通过次数13,259提交次数30,089思路:基于计数的贪心算法:按照每个字符出现的频率进行排序,因此当字符相同时会连续出现,每隔一个位置插入一个字符,并且保证出现次数最多的字母排在最后并从.原创 2020-11-30 09:24:37 · 554 阅读 · 0 评论 -
LeetCode 454. 四数相加 II
给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2解释:两个元...原创 2020-11-27 14:10:56 · 107 阅读 · 0 评论