面试题4:二维数组中的查找
题目:
在一个二维数组中(每个一维数组的长度相同),
每一行都按照从左到右递增的顺序排序;
每一列都按照从上到下递增的顺序排序;
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思考:
什么是二维数组?
直观的想到矩阵,实际上python当中没有数组的概念, 而是列表(List), 二维列表相当于二维数组 。
如下:
1 |
|
array([[ 1, 2, 8, 9],
[ 2, 4, 9, 12],
[ 4, 7, 10, 13],
[ 6, 8, 11, 15]])
实现
1.最直观的是直接循环遍历每一个元素,判断是否等于给定的整数,如果相等则输出存在,否则不存在
1 | class Solution: |
2.由于数组元素是分别按行按列递增的,考虑:将目标值与较大的元素进行比较,通过排除较大值向下遍历
从最后一行第一列开始遍历,记给定的整数为target,数组元素为array[i][j]
如果 target < array[i][j] 则行数减1**
如果 target > array[i][j] 则列数加1**
如果 target == array[i][j] 则返还True
1 | class Solution: |
1 | method = Solution() |
Author: Zongpu
License: 知识共享署名-非商业性使用 4.0 国际许可协议