最近我发现了这样一个问题,我想比较数组中的元素。对于每个元素,从左到右开始,找到值大于现有整数(x)的下一个整数(y),然后找到值小于其y(从左到右)整数的下一个第一个整数(z)。答案是这样的。
public static int[] comparator(int[] arr) {
int[] answers = Arrays.stream(arr).map(i -> -1).toArray();
for(int i = 0; i <arr.length; i++)
for (int j = i + 1; j < arr.length - 1; j++)
if (arr[i] < arr[j] && isElementFound(arr, answers, i, j))
break;
return answers;
}
private static boolean isElementFound(int[] arr, int[] answers, int i, int j) {
for (int w = j + 1; w < arr.length; w++)
if (arr[j] > arr[j + 1]) {
answers[i] = (arr[j] != -1 && arr[j + 1] != -1) ? arr[j] - arr[j + 1] : -1;
return true;
}
return false;
}
我想学习如何使用stack来解决这个问题。
暂无答案!
目前还没有任何答案,快来回答吧!