Java 中的优质子数组最大分数2025 年 1 月 7 日 | 阅读 3 分钟 任务是给定一个整数 k 和一个整数数组 nums,确定“好”子数组的最大分数。子数组的分数由其长度 (j - i + 1) 乘以其中的最小值确定。子数组的开始和结束索引 (i, j) 定义了子数组。如果索引 k 存在于子数组中,则认为它“好”;因此,i <= k <= j。问题在于找到任何“好”子数组可能获得的最高分数。为了解决这个问题,我们必须快速识别包含 k 且分数高的子数组,这些分数由子数组的最小元素乘以其长度来确定。 子数组 (i, j) 的分数可以表示为 min(nums[i], nums[i+1],..., nums[j]) * (j - i + 1)。当 i <= k <= j 时,子数组被认为是优秀的。 返回一个“好”子数组可以获得的最大分数。 示例 1 输入 int n = [1, 4, 3, 7, 4, 5] int k = 3 输出 The Maximum Score of a Good Subarray is 15 解释 理想子数组是 (1, 5),分数为 min(4,3,7,4,5) * (5-1+1) = 3 * 5 = 15。 示例 2 输入 int n = [5, 5, 4, 5, 4, 1, 1, 1] int k = 0 输出 The Maximum Score of a Good Subarray is 20 解释:理想子数组是 (0, 4),分数为 min(5, 5, 4, 5, 4) * (4 - 0 + 1) = 4 * 5 = 20。 双指针方法算法步骤 1:将最小值变量 mini 和结果变量 res 的值设置为索引 k 处的值。最初,k 应被用作子数组的中心点。 步骤 2:将两个指针 I 和 j 的初始值设置为 k。这两个指针将用于扩展子数组。 步骤 3:只要其中一个指针(I 或 j)没有到达数组的边界。 步骤 3.1:如果 I 在左边界 (0)。 步骤 3.2:如果 j 在右边界 (n - 1)。 步骤 3.3:要将子数组向右扩展,如果 Array[I - 1] 的元素小于 Array[j + 1] 的元素,则增加 j。 步骤 3.4:否则,减少 I 以便向左扩展子数组。 步骤 4:将 A[i] 和 A[j] 之间的最小值添加到 mini。 步骤 5:更新 res,包含 mini * (j - I + 1) 和现有 res 的最大值。这是一个关键步骤,因为它确定了当前子数组的分数,并记录了已发现的最高分数。 步骤 6:继续,直到其中一个箭头越过边界。 步骤 7:最后一步,返回 res 作为优质子数组可能获得的最大分数。 实施文件名:MaxiScore.java 输出 The Maximum Score of a Good Subarray is: 15 |
在本节中,我们将讨论如何使用 Java 中的字节数组反转字符串。以下是使用 Java 中的字节数组反转字符串的步骤。此方法的第一步是生成一个长度为……的临时字节数组
阅读 4 分钟
在 Java 中,算术运算符用于执行基本的数学运算。它们主要与 int、float、double 和 long 等数值原始类型一起使用。Java 提供以下五种算术运算符:加减乘除取模运算符符号运算符名称描述示例+加法运算符将两个操作数相加 a+b-减法运算符从第一个操作数中减去第二个操作数 a-b*乘法...
5 分钟阅读
我们可以使用 Java 程序从特定 URL 访问数据。Java 提供了 URL 和 URLConnection 类来通过网络与 URL 进行通信。这些类有许多有用的方法来处理 HTTP URL。在本节中,我们将讨论如何访问数据...
阅读 3 分钟
Java 中的 LocalDate 类提供了一种机制,可以与日期交互,而无需时间或时区组件作为 Java 8 Date and Time API 的一部分。这个不可变的类代表一个日期(年、月、日),但不代表其时间。经常需要……
阅读 4 分钟
在 Java 中,正则表达式经常用于使用字符序列定义搜索模式。量词,它决定了字符或字符组的出现次数,是指定搜索范围不可或缺的一部分。这些表达式有助于定义模式规则...
5 分钟阅读
?在 Java 编程的世界里,流已成为一种强大而通用的概念,用于以简洁高效的方式处理数据集合。流在 Java 8 中引入,它提供了一种函数式的方法来处理数据,使开发人员能够对...执行复杂的数据操作。
7 分钟阅读
在大多数动态规划问题中,最常用的场景之一是从网格的左上角到右下角的不同路径数。然而,当目标设定在网格内部时,问题会变得复杂...
阅读 6 分钟
Java 中的 Shunting-yard 算法 Shunting-yard 算法是一种在计算机科学中广泛使用的算法,用于将中缀表达式转换为后缀或前缀表达式。在后缀表示法(也称为逆波兰表示法 RPN)中,运算符位于操作数之后,而在前缀表示法中……
阅读 8 分钟
在 Java 编程的世界中,数据处理是一项常见的任务,通常涉及操作对象集合。在 Java 8 发布之前,对集合执行操作需要编写冗长且容易出错的代码,使用循环或外部库。然而,随着...
5 分钟阅读
描述:您有一个字符串,需要将其字符垂直打印,从左到右。字符数组可以称为字符串。在这种情况下,程序旨在垂直打印字母,从...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India