[英]How do I write a program which returns the index of the local maximum?
我一直在尝试编写该程序,但我不确定如何处理它。 局部最大值指的是列表中的一个integer大于它旁边的两个相邻数字。 程序做什么的例子;
CheckMaximum(data)
data = {1,7,1,24,15}
数据是至少一个数组 integer
它会有一个 output 的
[1, 3]
因为局部最大值是 7 和 24,它们分别在索引 1 和 3 中。 如果输入的数组只有一个数字,它会返回一个[0]
这是一个提示:
for (int i = 1; (i+1) < items.length; i++){
int current = items[i];
int previous = items[i-1];
int next = items[i+1];
if ((current > previous) && (current > next)) {
// i is a local maxima
}
}
您可以从索引 1 循环到小于列表大小的 2,将每个元素与紧邻前后的元素进行比较(从当前索引加或减 1)。
static List<Integer> CheckMaximum(List<Integer> data) {
if (data == null || data.size() < 2) return List.of(0); // this case is unclear
List<Integer> res = new ArrayList<>();
for (int i = 1; i < data.size() - 1; i++)
if (data.get(i) > data.get(i - 1) && data.get(i) > data.get(i + 1)) res.add(i);
return res;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.