我试图找到类似于我的问题的先前线程,但没有找到.
考虑一个获取数组和数字的函数.我想找到下一个更高的数字.
例:
输入: arr = {2,5,3,8,15,10}, number = 6
输出:8因为6 < 8.
在Perl中执行此操作的最佳算法是什么?
编辑:我尝试了什么:
my @arr = (2,5,3,8,15,10);
my $number = 6;
my $next_largest = 10000000;
foreach my $val (@arr) {
if($number < $val && $next_largest > $val) {
$next_largest = $val;
}
}
if(defined($next_largest)) {
print $next_largest."\n";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法没有声明$next_largest = 10000000?它看起来不太好,并且它不处理高于此值的值的情况.此外,如果我尝试$next_lergest没有数字,它不起作用.
我认为最好 - 最好看(时间并不重要).
use List::Util 'min';
my @arr = (2,5,3,8,15,10);
my $number = 6;
my $next_largest = min grep $_ > $number, @arr;
if(defined($next_largest)) {
print $next_largest."\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |