检查元素在java数组中是否有后继元素



我正在尝试检查数组的一个元素是否有一个successor。换句话说,将Ascending子列表设置为0,将其余的设置为1。应该忽略inputArray的第一个元素

如果是则两个元素都应该是CCD_ 4如果不是则是1。例如:对于输入

int[] arr = {1,8,1,9,10};

输出应该是[1,1,1,0,0]

另一个例子:对于输入int[] arr = {1,2,3,9,100};,输出应该是:[1,0,0,1,1]

这是我的尝试,但没有达到预期效果。我在哪里做故障?

public class HelloWorld {
public static void main(String[] args) {
int[] arr = { 1, 8, 1, 9, 10 };
int[] listOutput;
for (int i = 1; i<arr.length - 1; i++) {
if (arr[i] - arr[i + 1] == -1) {
arr[i] = 0;
arr[i + 1] = 0;
} else {
arr[i] = 1;
}
}
System.out.println("Hello World");
for (int i = 0; i<arr.length; i++) {
System.out.println(arr[i]);
}
}
}
public static void main(String[] args) {
int[] arr = { 1, 8, 1, 9, 10 };
// assume arr.length >= 2
boolean asc = arr[1] - arr[0] == 1;
for (int i = 1; i < arr.length - 1; i++) {
if (arr[i + 1] - arr[i] == 1) {
arr[i] = 0;
asc = true;
} else {
if (asc) {
asc = false;
arr[i] = 0;
}
else {
arr[i] = 1;
}
}
}
arr[arr.length - 1] = asc ? 0 : 1;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}

这将用0替换每个大小大于1的升序(乘1(子列表,并用1替换每个剩余元素(除了第一个保持不变的元素(。

您正在从1而不是从0循环数组。

最新更新