Java 中的排序二进制数组中 1 的计数10 Sept 2024 | 5 分钟阅读 给定一个已排序的二元数组(只包含 0 和 1 的数组是二元数组)。任务是找出二元排序数组中存在的 1 的数量。 示例:1 输入 int arr[] = {0, 0, 0, 0, 1, 1, 1, 1, 1} 输出 5 解释:输入数组中总共有 5 个 1。 示例:2 输入 int arr[] = {0, 0, 0, 0, 0, 0, 0, 0, 0} 输出 0 解释:输入数组中总共有 0 个 1。 在此方法中,我们将使用一个名为 countOne 的变量,并将其初始化为零。然后,我们将使用一个循环来遍历数组的元素。每当循环变量指向的当前元素为 1 时,我们将 countOne 变量加 1。当数组元素遍历完成时,变量 countOne 的值就是我们的答案。请观察以下实现。 文件名: CountOneSortedArray.java 输出 For the input array: 0 0 0 0 1 1 1 1 1 The total number of ones is: 5 For the input array: 0 0 0 0 0 0 0 0 0 The total number of ones is: 0 复杂度分析:由于程序使用了 for 循环,因此程序的时间复杂度为 O(n),其中 n 是输入数组中的元素总数。程序空间复杂度为常数,即 O(1)。 让我们通过从右到左遍历数组来优化上述程序。这是因为数组是已排序的,所有存在的 1 元素都将位于右侧。因此,我们将只遍历包含值 1 的元素,然后使用 break 语句终止循环。在大多数情况下,以下实现比上面的实现效果更好。只有一种情况,即以下实现和上面的实现具有相同的时间消耗,那就是当输入数组的所有元素的值都为 1 时。 文件名: CountOneSortedArray1.java 输出 For the input array: 0 0 0 0 1 1 1 1 1 The total number of ones is: 5 For the input array: 0 0 0 0 0 0 0 0 0 The total number of ones is: 0 复杂度分析:上面程序使用的循环将只遍历那些值为 1 的元素。因此,程序的时间复杂度为 O(p),其中 p 是已排序二元数组中存在的 1 的总数。程序空间复杂度与前一个程序相同。 方法:使用二分搜索由于输入数组已排序,可以使用二分查找来找出输入数组中存在的 1 的总数。 文件名: CountOneSortedArray.java 输出 For the input array: 0 0 0 0 1 1 1 1 1 The total number of ones is: 5 For the input array: 0 0 0 0 0 0 0 0 0 The total number of ones is: 0 复杂度分析:程序使用二分查找,因此程序的时间复杂度为 O(log(n)),其中 n 是输入数组中的元素总数。程序空间复杂度与前一个程序相同。 下一主题Java 中的有序对 |
? Java 是最广泛使用的编程语言之一,应用范围广泛,从开发移动应用程序到基于 Web 的应用程序和软件系统。然而,Java 并非没有需要故障排除的问题,包括弃用错误。当方法或...
阅读 4 分钟
在 Java 编程的世界中,克隆在创建项目的相同副本方面起着关键作用。它提供了一种复制项目状态的机制,使开发人员可以在不影响原始项目的情况下使用副本。Java 提供了几种实现克隆的方法,...
5 分钟阅读
在 Java 中,静态成员和非静态成员在它们如何存储、访问和在类中使用方面有所不同。Java 中的静态成员静态成员指的是类级别的变量或方法,这意味着它们属于类本身,而不是从中实例化的任何单个对象。它使得...
阅读 8 分钟
什么是面向对象编程 (OOP)?面向对象编程具有广泛的影响,因为它在多个层面都很有吸引力,并有望实现更快、更便宜的开发和维护。它遵循自下而上的方法来开发应用程序。在本节中,我们将深入讨论什么是面向对象编程?面向对象编程 词语“面向对象”...
阅读 6 分钟
Java 是一种通用且广泛使用的编程语言,以其健壮性和灵活性而闻名。软件开发中的一项常见任务是在不同格式之间转换数据,例如 Java Map 和 JSON(JavaScript Object Notation)。JSON 是一种轻量级且易于人类阅读的数据交换格式...
阅读 4 分钟
要在 Java 中将输出打印到控制台,请使用 System.out.println() 函数。然而,在某些情况下,出于日志记录或审计目的,您可能希望将此输出重定向到文件。可以使用 PrintStream 类来实现此目的。在本节中,我们将...
阅读 3 分钟
给定两个数字。第一个数字是整数 n,第二个数字是非负数,小于或等于 n,表示为 k。任务是找出所有错排的总数...
阅读 6 分钟
Facing the Sun 问题涉及确定一行中能看到太阳的建筑数量,假设阳光来自特定方向(通常是左侧)。每座建筑的高度都会影响可见性,这使得它成为一个通常需要遍历和比较技术来解决的问题...
7 分钟阅读
Java中的Image类是用于图形图像表示的所有其他类的抽象超类。类声明java.awt.Image类的声明如下:Public abstract class Image extends Object Class Fields下表显示了Image类的各种字段。字段描述protected float accelerationPriority它优先加速...
阅读 4 分钟
Groovy 和 Java 的区别 Groovy 是一种可选类型和动态编程语言,用于在 Java 平台上开发应用程序。Groovy 的语法与 Java 相似。Groovy 是一种非常强大、强类型、动态和静态的编程语言,它扩展了 JDK。通过扩展...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India