Java Program to Find the Minimal Average of Any Slice Containing at Least Two Elements2025年3月26日 | 阅读 4 分钟 这是像Google、Amazon、TCS、Accenture等顶级 IT 公司面试中经常遇到的问题。通过解决这个问题,可以考察求职者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将通过不同的方法和逻辑来查找包含至少两个元素的任意切片的最小平均值。此外,我们还将为此创建 Java 程序。 查找包含至少两个元素的任意切片的最小平均值的问题被称为MinAvgTwoSlice 问题,并且是流行算法任务之一。数组中的切片是子数组,因此需要找到平均值最小的切片。 问题陈述给定一个包含 n 个整数的数组,问题是给定两个 n 个整数的序列,找到平均值最小的切片的起始位置。切片至少需要包含两个元素。如果有两个或更多切片具有相同的最小平均值,则应返回第一个切片的位置。 关键观察小切片很重要:可以注意到,切片的最小平均值要么是两个元素的切片,要么是三个元素的切片。这意味着包含这些最小切片的实际切片将不会具有比最小切片“平均值”更低的值。 证明:如果切片的大小大于三,则可以始终比较平均值,并且可以将切片分解为更小的切片。此外,检查大小为二或三的切片就足够了,因为彼此距离较远的元素不会影响概率。 效率:只检查大小为二或三的切片,就有可能达到线性时间复杂度的有效解决方案。 示例输出 The starting position of the minimal average slice is: 1 时间复杂度:O(n),其中变量 n 表示数组的大小。因为它只需要遍历数组四次,并在每次遍历中比较大小为 2 和 3 的子数组。 空间复杂度:由于添加了几个额外的 变量,空间复杂度保持为 O(1)。 解释两个元素的切片 我们使用循环遍历数组,并使用整数除法找到数组中每两个相邻元素的平均值。每当我们评估 a[] 的新最小平均值时,我们使用的 minAvg 和 minIndex 都会相应更新。 三个元素的切片 同样,我们监控连续三个项的平均值是否相等。这样,我们就确保不会跳过任何潜在的最小平均值。 为什么大小为 2 和 3 就足够了?两个元素的切片:在这种情况下,如果存在于最小切片中,则平均值也会被指示。因此,两个元素的切片提供了表中两个元素的快速对比。 三个元素的切片:添加一个额外的元素是可能的,因为它可能证明平均值比之前显示的小,如果那个元素显着降低了所引用的平均值。因为检查了大小为 3 的切片。其思想是确定大小为 3 的取货车是否合适。 注意事项和边缘情况数组大小:该函数适用于大小大于 2 的数组。如果数组大小为 2,则唯一可以形成的切片是整个数组。 负数:解决方案也能很好地处理负数,因为正如我提到的,平均值是使用浮点值计算的。 所有元素相同:如果所有元素都相同,则最小平均值切片可以从任意位置开始;但是,给定的 函数将返回第一个。 结论可以随机检查大小为 2 或 3 的切片,以便在大多数情况下它们的平均值大于将其他任何元素添加到该切片的平均值。因此,当我们只关心最小平均值时,检查大小为 4 的切片是毫无意义的。这就是为什么解决方案将仅构建和关注大小为 2 和 3 的切片,以确保其准确性和实用性。 下一主题Java 常量 |
欺凌算法 (bully algorithm) 是一种选举算法,主要用于选择一个协调者。在分布式系统中,我们需要一些选举算法,如欺凌算法和环算法,来获得一个执行其他进程所需功能的协调者。选举算法选择一个单一的...
阅读 4 分钟
java.nio.charset.CharsetEncoder 的内置方法之一是 malformedInputAction()。对于格式错误的输入问题,CharsetEncoder 会返回此编码器的当前操作。返回的三种 CodingErrorAction 类型是 IGNORE、REPLACE 和 REPORT。不符合所用字符集预期格式的字符...
阅读 3 分钟
包括 Java 在内的许多编程语言允许将一种数据类型转换为另一种数据类型,以方便程序员。转换的类型可以是隐式的或显式的。隐式转换由 JVM 自动完成,但显式转换由程序员完成。在...
阅读 3 分钟
在本节中,我们将学习什么是 Kynea 数,并创建 Java 程序来计算 Kynea 数。Kynea 数程序经常出现在 Java 编码面试和学术中。Kynea 数是递归定义的数字:F(k) = 4 x F(k...
阅读 6 分钟
可以使用 SimpleTimeZone 类的 setRawOffset() 函数将基本时区偏移量设置为 GMT。为了获得本地时间,将偏移量应用于 UTC。语法:public void setRawOffset(int offsetMillis) 参数:该函数唯一的参数是 offsetMillis,它给出……
阅读 3 分钟
Java 作为一种强类型语言,在处理不同数据类型时通常需要显式类型转换。最常见的转换场景是将对象转换为整数。这在处理从外部源(如数据库或用户输入)检索的数据时很重要,在这些数据中,数据...
阅读 8 分钟
Java JDBC 选择题 JDBC 是一个 API(应用程序编程接口),它帮助程序员编写 Java 程序来连接数据库、从数据库检索数据,并在 Java 程序中对数据执行各种操作。它...
阅读 10 分钟
当创建的对象无法更改时,Java 类就被认为具有不可变状态。对象的创建完成后,其状态永远不会改变。非共享的可变对象始终是线程安全的,这些对象是...
阅读 4 分钟
在本节中,我们将讨论什么是“有害数”,并创建 Java 程序来检查给定的数字是否是“有害数”。“有害数”程序经常在 Java 编码面试和学术中出现。“有害数” 如果一个数字中 1 的总数……
阅读 4 分钟
基于 Java 的智慧城市项目充当基础应用程序,展示了交通服务、医院信息、教育机构和安全设施的关键城市数据。游客以及新居民会发现此项目有助于获取重要的城市相关信息。基于 Java 的系统使用 Java...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India