我的目标是获取在特定日期范围内连续增加的最大数量的计数。下面是一个数组。 2021 年 1 月 13 日和 2021 年 2 月 17 日之间的最大数量增长数字的正确答案是 5,因为数字 3、8、10、13、15 在该日期范围内正在增长。
我设法在一段时间内搜索...
$row = array(
array('01/02/2021', 1),
array('01/13/2021', 4),
array('01/15/2021', 6),
array('01/19/2021', 9),
array('01/30/2021', 5),
array('02/03/2021', 4),
array('02/11/2021', 3),
array('02/12/2021', 8),
array('02/15/2021', 10),
array('02/16/2021', 13),
array('02/17/2021', 15),
array('02/18/2021', 16)
);
$startDateNew = date('m/d/Y', strtotime("2021-01-13"));
$endDateNew = date('m/d/Y', strtotime("2021-02-17"));
foreach($row as $x) {
if(($x[0]>=$startDateNew)&&($x[0]<=$endDateNew) ){
echo 'Found ';
print_r($x);
}
}
我还设法在一维数组中搜索第一个递增的数字序列,因为下面代码的答案是 4。但是我没有成功在 if 语句之后继续这个搜索到下一个递增序列(和下一个和下一个),所以在这种情况下正确答案是 5。
除此之外,这两个搜索应该以某种方式结合在一起。
$numbers = array(1,4,6,9,5,4,3,8,10,13,15);
function LCIS($numbers) {
$counter = 1;
$answer = 1;
for($i = 0; $i < count($numbers) -1; $i++) { //
if ($numbers[$i] < $numbers[$i+1]) { //comparing array indexes together
$counter++; //
$answer = max($answer, $counter); //this doesn't do anything spectacular right now...
continue;
}else {
$counter == 1;
}
return $answer;
}
}
echo LCIS($numbers);
我是 php 编码的初学者。请帮帮我好吗?
答案 0 :(得分:1)
好吧,如果您已经有两部分代码,您只需要将它们组合在一起。我的建议是在检查 $numbers
数组元素是否在特定日期范围内时输入 $row
数组。
function LCIS($numbers)
{
$counter = 1;
$answer = 1;
for ($i = 0; $i < count($numbers) - 1; $i++) { //
if ($numbers[$i] < $numbers[$i + 1]) { //comparing array indexes together
$counter++; //
$answer = max($answer, $counter); //this doesn't do anything spectacular right now...
} else {
$counter = 1;
}
}
return $answer;
}
$row = array(
array('01/02/2021', 1),
array('01/13/2021', 4),
array('01/15/2021', 6),
array('01/19/2021', 9),
array('01/30/2021', 5),
array('02/03/2021', 4),
array('02/11/2021', 3),
array('02/12/2021', 8),
array('02/15/2021', 10),
array('02/16/2021', 13),
array('02/17/2021', 15),
array('02/18/2021', 16)
);
$numbers = array();
$startDateNew = date('m/d/Y', strtotime("2021-01-13"));
$endDateNew = date('m/d/Y', strtotime("2021-02-17"));
foreach($row as $x) {
if(($x[0]>=$startDateNew)&&($x[0]<=$endDateNew) ){
$numbers[] = $x[1];
}
}
echo LCIS($numbers);
顺便说一句:我对您的 LCIS
函数做了一些修改,它会运行得更快更正确。