有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

交换数组中重复值的位置(Java)

在这里,我尝试交换'9'的位置,所以它正好在'4'之后

输入:int[] nums1 = { 1, 4, 1, 9 };

输出:[1, 4, 9, 1]

代码是:

int loc4 = 0;
int temp = 0;

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 4) {
        loc4 = i;   
    }

    if (arr[i] == 9) {
        for (int j = i; j > 0; j--) {
            temp = arr[i];
            arr[i] = arr[loc4 + 1];
            arr[loc4 + 1] = temp;
        }
    }
}

这个代码的问题是,一旦有多个4s和9s,它就会忽略重复的4s和9s

所以我尝试添加一个重复计数和一个continue语句,当rep count大于1时,但这似乎不起作用

int loc4 = 0;
int temp = 0;
int rep = 0;
for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 4) {
        loc4 = i;
        rep++;
    }

    if (arr[i] == 9) {
        for (int j = i; j > 0; j--) {
            temp = arr[i];
            arr[i] = arr[loc4 + 1];
            arr[loc4 + 1] = temp;

            if (rep > 1)
                continue;
        }   
    }
}

所以当我的输入是:int[] nums2 = { 1, 4, 1, 9, 9, 4, 1 };

我的输出应该是:[1,4,9,1,1,4,9]

我得到的是:[1, 4, 9, 1, 9, 4, 1]

请注意,当出现单数的4s和9s或它们已经就绪时,将不会发生任何事情


共 (0) 个答案