交换数组中重复值的位置(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) 个答案