java - 如何将数组中 n 个相似元素的下一个 n-1 个元素设为 0?

标签 java arrays xor

我有一个整数 667778,我需要将其输出为 607008。

我使用了数组 6,6,7,7,7,8 和异或下一个相似的元素。 我需要在恒定的时间内做到这一点。

假设

int arr[]={6,6,7,7,7,8}
    int ele=arr[0];
    for (int i=1;i<arr.length;i++)
    {
         if(arr[i]==ele)
            arr[i]=0;
         else
            ele=arr[i];
    }

输出数组arr有[6,0,7,0,0,8] 它需要O(n) n 是数组的大小 我怎样才能在恒定的时间内做到这一点?

最佳答案

除非给定的数字始终是 6 位数字(在这种情况下,您可以对它进行硬编码,这在技术上是恒定时间,但将为循环提供相同的性能),否则您无法获得恒定时间,因为问题的基础需要首先循环遍历数组。

您是否有理由希望它在恒定时间内工作,因为 O(n) 是程序读取数据的最快速度。

编辑: 阅读您的评论后,我认为您需要想出一种不同的方法,这样计算异或就不会在循环内。如果没有最初的问题,我无法提供更多帮助。

关于java - 如何将数组中 n 个相似元素的下一个 n-1 个元素设为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57413623/

相关文章:

java - 查找排序数组中唯一重复的元素

java - 如何对多项式执行复杂的变量更改(在 Mathematica 中)

c - 在 C 中,如何删除 char 数组中相同且连续的行?

algorithm - 将一组整数中的哪些整数进行异或以形成目标整数?

Javascript:数组和 For 循环基础知识

arrays - 如何将数组传递给 Rust 中的函数并更改其内容?

计算用 XOR 方法编写的谢尔宾斯基三角形的维数

java - 使用Gradle 2.12(对于Java),当且仅当 'build'时,如何才能下载源文件?

java - 对对象的字段进行快速排序

java - 如何使用 Hibernate 正确删除复杂对象?