每日一题
文章平均质量分 60
本专栏载录力扣(LeetCode)中的每日一题,为大家学习提供方便。若是能将本专栏中题目解透,日后定能有所作为!
清风puts
..
展开
-
java 力扣(LeetCode) 594.最长和谐子序列
题目描述和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。解题思路:思路:1.通过hashmap存储对应元素已经出现的次数 存储过程复杂度O(N)2.遍历hashmap 遭到每个key和key+1 对应次数的总和 取出Math.max 对应复杂度O(m) m为N中不重复的数据个数3.原创 2021-11-20 18:56:39 · 206 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 446.等差数列划分 II - 子序列 2021.8.11
题目链接:446.等差数列划分 II - 子序列不想戳的看下图示例:提示:解题思路1:动态规划(dp)在子序列I的基础上可以不连续取值。动态规划——dp[i]中存储的为字典(减小空间损耗,其中存储数组为稀疏数组)。dp[i][d] = dp[j][d] + 1, 其中j<i,dp[i][d]表示了以nums[i]结尾的能够构成子序列或伪序列(2个元素)组合个数。代码如下:class Solution { public int numberOfArithmetic原创 2021-08-11 13:29:22 · 85 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 413.等差数列划分 2021.8.10
题目链接:413.等差数列划分不想戳的看下图:示例:提示:解题思路1:双指针1:先求出所有满足等差要求的最长连续子数组。2:在最长子数组中,找出所有满足要求的连续分子数组,其数量和即为所求值。代码如下:class Solution { public int numberOfArithmeticSlices(int[] nums) { int result = 0; if (nums.length < 3) { return result; } //原创 2021-08-10 16:19:21 · 79 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 743.网络延迟时间 2021.8.2
题目链接:743.网络延迟时间不想戳的看下图:示例:提示:解题思路1:Dijkstra算法(邻接矩阵)1.将输入的数组转换为一个图,用邻接矩阵表示dijsktra2.使用dijsktra算法,求出到所有其他顶点的最短路径和使用dist来保存最短路径和3.求出dist里的最大值,即是答案,因为题目要求到达所有点,那么dist里最大值就是答案如果dist里有初始化的Integer.MAX_VALUE那么说明这点不可达,返回-1复杂度O(n^2)代码如下:class Solut原创 2021-08-10 14:32:33 · 174 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 1337.矩阵中战斗力最弱的k行 2021.8.1
题目链接:1337.矩阵中战斗力最弱的k行不想戳的看下图:示例:提示:解题思路1:HashMap+CompareTo方法分析:我们需要按照每行1的数量对数列的索引进行从小到大排序,可以使用HashMap存储<索引,相应1的数量>,最后取出前k个key。过程:遍历每行数组,相应的信息存入map。将map对应的Entry存入ArrayList列表。排序时调用Collections.sort()方法,并重写compareTo()方法,list按照value从大到小进行排原创 2021-08-09 19:39:23 · 108 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 313.超级丑数 2021.8.9
题目链接:313.超级丑数不想戳的看下图:解题思路1:用题目给的例子 [2,7,13,19] 来说。将 [2,7,13,19] 依次入堆。出堆一个数字,也就是 2。这时取到了第一个超级丑数。接着将 2 和 [2,7,13,19] 的乘积,也就是 [4,14,26,38] 依次入堆。这样就可以得到其他的丑数。每次堆都可以取到最小的,每次我们也会将最小的从堆中移除。因此取 n 次自然就是第 n 大的超级丑数了。注:堆的解法没有太大难度,唯一需要注意的是去重。比如 2 * 13 = 26,而原创 2021-08-09 17:02:07 · 91 阅读 · 0 评论