java - 在 O(n) 时间和 O(1) 空间内将所有 x 元素插入数组末尾

标签 java arrays algorithm

我正在尝试解决算法任务,但不幸的是无法为它想出一些最佳方法。我们得到一个数组,任务是移动数组末尾的所有元素 x。例如
输入[1,2,3,4,1,2,3,4,5,6,5]
输出 [2, 3, 4, 2, 3, 4, 5, 6, 5, 1, 1]

最佳答案

你可以这样实现

import java.util.Arrays;

public class Rearrange
{

    public static void main(String args[]) {
       int arr[] = {1,2,3,4,1,2,3,4,5,6,5};
        reArrange(arr, 1);
        System.out.println(Arrays.toString(arr));
    }

    private static void reArrange(int[] arr, int x) {
        int index = 0;
        for (int current : arr)
            if (current != x)
                arr[index++] = current;
        Arrays.fill(arr, index, arr.length, x);
    }

}

输出

[2, 3, 4, 2, 3, 4, 5, 6, 5, 1, 1]

关于java - 在 O(n) 时间和 O(1) 空间内将所有 x 元素插入数组末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27481850/

相关文章:

java - 同一台服务器上的 Spring Boot + Angular2

java - 从文本文件中读取数据

java - android.os.StrictMode 实例=2;限制=1

php - 有效地对多个 PHP foreach 循环使用相同的代码

javascript - 有向无环图中所有 Node 的可达性计数

java - Android/Java 长数学有时会相差一个小小数

python - 通过url从python访问json元素

javascript - 显示不带括号的对象数组,但元素(包括逗号)必须保留

c# - 确定给定数字所需的行/列

c++ - 使用移位算法计算平方根始终输出相同的数字