在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 如下数组中是否存在 6
$target = [
[1, 2, 8, 9],
[2, 4, 9, 12],
[4, 7, 10, 13],
[6, 8, 11, 15]
];
思路 : 先从右上角开始比较, 如果目标小于数组的值列数减一,如果大于行数加一
参考
function arrayExitValue($arr, $value)
{
$rowNum = count($arr); // 行
$colNum = count($arr[0]); // 列
$row = 0;
$col = $colNum - 1;
while ($row < $rowNum && $col >= 0) {
echo $row . ' - ' . $col . PHP_EOL;
if ($value < $arr[$row][$col]) {
$col--;
}
if ($value > $arr[$row][$col]) {
$row++;
}
if ($value == $arr[$row][$col]) {
return [$row, $col];
}
}
return false;
}
网友评论