java - 使用更少的内存需要重新排序数组元素

标签 java

我有一个最近的面试问题,以最少的内存使用量对数组中的元素进行重新排序。不使用任何额外的变量或集合等。

输入:

value   65 7 1 68 90
index    0 1 2  3  4

输出:

value   90 68 1 7 65
index    0  1 2 3  4

最佳答案

您可以使用 XOR 在元素之间交换(第一个与最后一个,第二个与最后一个,等等),如下所示:

int [] arr = {65, 7, 1, 68, 90};
for(int i=0; i<arr.length/2; i++){
    // the following 3 lines swap between elements arr[i] and arr[arr.length-i-1]
    arr[i] = arr[i] ^ arr[arr.length-i-1];
    arr[arr.length-i-1] = arr[i] ^ arr[arr.length-i-1];
    arr[i] = arr[i] ^ arr[arr.length-i-1];
}

for(int i=0; i<arr.length; i++){
    System.out.print(arr[i]+" ");
}

输出

90 68 1 7 65 

关于java - 使用更少的内存需要重新排序数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342625/

相关文章:

java - 工具栏干扰使用 SearchView 过滤 RecyclerView

java - 在 Java 中很难使用泛型类和泛型方法

java - IntelliJ IDEA定义的maven pom中的错误

java - 线程 "AWT-EventQueue-0"java.lang.NoClassDefFoundError : com/sun/image/codec/jpeg/JPEGCodec 中出现异常

java - 枚举 : Why? 什么时候?

java - 如何根据 2 个值从 map 中过滤文档并创建另一个 map

java - "The requested resource does not support http method ' GET '"- 但我 'm not using C# or asp.net, I' 是发出请求的人

java - 适用于 Android 的 Google 联系人 API

java - Maven:如何在 >= Java 9 中将依赖项添加到模块路径

java - 从 Drool 的工作内存中删除事实后堆大小没有减少