
java
文章平均质量分 58
清风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 · 267 阅读 · 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 · 118 阅读 · 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 · 110 阅读 · 0 评论 -
力扣(LeetCode) 【每日一题】 743.网络延迟时间 2021.8.2
题目链接: 743.网络延迟时间 不想戳的看下图: 示例: 提示: 解题思路1: Dijkstra算法(邻接矩阵) 1.将输入的数组转换为一个图,用邻接矩阵表示 dijsktra 2.使用dijsktra算法,求出到所有其他顶点的最短路径和 使用dist来保存最短路径和 3.求出dist里的最大值,即是答案,因为题目要求到达所有点,那么dist里最大值就是答案 如果dist里有初始化的Integer.MAX_VALUE那么说明这点不可达,返回-1 复杂度O(n^2) 代码如下: class Solut原创 2021-08-10 14:32:33 · 242 阅读 · 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 · 134 阅读 · 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 · 135 阅读 · 0 评论 -
java 力扣 (LeetCode) 1846. 减小和重新排列数组后的最大元素
题目链接 力扣 (LeetCode) 1846. 减小和重新排列数组后的最大元素 不想戳的看下图 样例 数据范围 解题思路: 贪心算法 + 哈希表统计,不断维护增大一个max num。 代码如下: public int maximumElementAfterDecrementingAndRearranging(int[] arr) { if (arr.length == 0) { return 0; } TreeMap&原创 2021-07-15 12:11:05 · 135 阅读 · 0 评论 -
力扣 (LeetCode) 218.天际线问题
题目链接 力扣(LeetCode) 218.天际线问题 不想戳的看下图: 样例: 数据范围: 解题方法1: 扫描线法 代码如下(java): class Solution { // 排序规则,按照x的坐标升序排列,若x坐标相同,右端点在前 class IntCompator implements Comparator<int[]> { @Override public int compare(int[] o1, int[] o2) { // TODO Auto-gener原创 2021-07-13 12:32:52 · 484 阅读 · 0 评论