gpt4 book ai didi

java - 查找已排序的一维数组中元素的最近/最接近的较低值

转载 作者:行者123 更新时间:2023-12-02 02:23:19 25 4
gpt4 key购买 nike

我想知道是否有可能在非空排序数组中找到可能存在或不存在的元素的最接近的较低元素。元素也可以重复任意次。数组的所有元素+ve。

例如,如果我们有值 [2,5,6,7,7,8,9],并且我们正在寻找最接近 6 的元素,那么它应该返回 5,因为 5 是小于 6 的数组。同样,如果我们要查找最接近 9 的元素,它应该返回 8,因为 8 是数组中最大的数字,小于 9。如果没有找到最接近的较低元素,则返回-1,就像我们正在寻找最接近1的元素一样,它应该返回-1,因为不存在这样的元素可以低于1。这里-1代表距离该元素最近的数组中不存在这样的值

我已经尝试过下面的代码。没关系?如果我遗漏了什么,请帮助我。 Java 代码会更有帮助。

static int find(int[] a, int target)
{
int n = a.length;

if(target <= a[0])
return -1;

if(target > a[n-1])
return a[n-1];

int i=0,j=n,mid=0;

while(i<j)
{
mid = (i+j)/2;
if(target <= a[mid])
{
if( mid >0 & target> a[mid-1] )
{
return a[mid-1];
}

j= mid;
}
else
{
if( mid<(n-1) & target > a[mid+1] )
{
return a[mid+1];
}

i= mid+1;
}
}
return mid;
}

最佳答案

使用流:

import java.util.stream.IntStream;

public class FindNearestLowestValue {

public final static void main(String[] args) {
int[] array = {2,5,6,7,7,8,9};
int searchVal = 6;
// reverse the order so the first element of the filtered stream is the result
System.out.println(
IntStream.range(0, array.length)
.map(i -> array[array.length - 1 - i])
.filter(n -> n < searchVal)
.findFirst().orElse(-1)
);
}
}

关于java - 查找已排序的一维数组中元素的最近/最接近的较低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48173086/

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