gpt4 book ai didi

java - 查找数组中小于 M 下一个元素的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:16:54 26 4
gpt4 key购买 nike

任务:

在数组中找到一个元素,大小 N 小于此数组中的 M 个下一个元素。

Here is algorithm:
a[0]<a[1] => true, then
a[0]<a[2] => false, then
a[2]<a[3] => true, then
a[2]<a[4] => true, then
... => always true
a[2]<a[m+2] => true then return a[2] //a[2] is minumum, m+2<n

我的实现不起作用。循环似乎没有尽头。

int[] array = new int[]{-1, 2, -3, 5, 0, 6, 9, -1, 5, 7, 8, 1};
int numElements = 5;
int i=0;
int j=1;
int result;

while (i+j < array.length){
if (array[i]<array[i+j]){
if (i+j == numElements){
result = array[i];
} else j++;
} else {
i += j;
j = 1;
}
}

我的输出应该是-3。

没有当前输出:无限循环。

最佳答案

arr[i] < arr[i+j]是假的,你应该...

  1. 重置j1
  2. 设置i等于 i+j

您还应该在 while 中添加一个检查循环条件确保i+j < arr.length

最后~取j++从你的else block 。

while (i+j < array.length && r){
if(array[i]<array[i+j]){
if(i+j == numElements){
result = array[i];
r = false;
}
++j;
}
else{
i += j;
j = 1;
}
}

当我用 C++ 实现它时,我得到了 -3 的正确输出.

关于java - 查找数组中小于 M 下一个元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40115767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com