首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写返回本地最大值索引的程序?

如何编写返回本地最大值索引的程序?
EN

Stack Overflow用户
提问于 2022-10-03 02:03:30
回答 2查看 61关注 0票数 0

如何编写一个程序,该程序获取一个数字列表,然后找到本地最大值的索引。

我一直在尝试编写这个程序,但我不知道如何处理它。局部最大值指的是列表中的一个整数,它比它旁边的两个相邻数大。程序所做工作的例子;

代码语言:javascript
复制
CheckMaximum(data) 
data = {1,7,1,24,15}

data是至少一个整数的数组。

它的输出

代码语言:javascript
复制
[1, 3]

因为局部最大值分别为7和24,分别在1和3的索引中。如果输入的数组只有一个数字,它将返回一个[0]

EN

回答 2

Stack Overflow用户

发布于 2022-10-03 02:08:43

以下是一个提示:

代码语言:javascript
复制
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
    }
}
票数 0
EN

Stack Overflow用户

发布于 2022-10-03 02:10:58

您可以从索引1循环到小于列表大小的2,将每个元素与紧接在前面和后面的元素进行比较(从当前索引中添加或减去1)。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73930540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档