我正在尝试使用插值搜索算法来查找值并将其返回。 (目前它正在做什么)。我正在尝试修改它,以便返回一个数字,如果在数组中找不到搜索到的项目,我可以用它来查找输入项目的最接近的值。
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:4200")
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD","OPTIONS")
.allowedHeaders("Content-Type", "Date", "Total-Count", "loginInfo","jwt_token")
.exposedHeaders("Content-Type", "Date", "Total-Count", "loginInfo", "jwt_token")
.maxAge(3600);
}
};
}
答案 0 :(得分:0)
您可以使用找到最接近值的聚合。 这是一种自定义扩展方法,但你明白了。
public static double GetValueClosestTo(this List<double> values, double closestTo)
{
return values.Aggregate((x, y) => Math.Abs(x - closestTo) < Math.Abs(y - closestTo) ? x : y);
}
假设您有以下数组{1, 5, 9.2, 6, 17}
并测试以下数字{6, 15, 5.2}
。您将使用以下代码
var sourceArray = new [] {1, 5, 9.2, 6, 17}.ToList() // for simplicity i use a list
var closestToX = sourceArray.GetValueClosestTo(6); // this return 6
closestToX = sourceArray.GetValueClosestTo(15); // this return 17
closestToX = sourceArray.GetValueClosestTo(5.2); // this return 5