力扣 剑指offer04 二维数组中查找
发布日期:2021-07-22 07:28:47 浏览次数:2 分类:技术文章

本文共 712 字,大约阅读时间需要 2 分钟。

一、解题思路

观察数据规律,让程序只做必要的判断,因为递增,一旦目标值小于数组中的某个值,那么此行后面元素都可以不用考虑。具体见下面注释

对应算法240题用这个方法会有超时的测试数据,内循环改成二分查找就可以通过。

二、解题答案

class Solution {
public: bool findNumberIn2DArray(vector
>& matrix, int target) {
if (matrix.empty()||matrix[0].empty()) return false; //若是空数组直接返回 false,如果忘记判断在遇到空数组时会运行出错 int i, j; for (i = 0; i < matrix.size(); i++) {
if (target < matrix[i][0]) return false; //小于行首表明一定不存在 for (j = 0; j < matrix[0].size(); j++) {
if (target == matrix[i][j]) return true; //找到相等返回true else if (target < matrix[i][j]) break; //小于某个值,此行后面元素均不用比较 } } return false; //默认找不到 }};

测试用例:

1 4 7 11 15 2 5 8 12 19 3 6 9 16 22 10 13 14 17 24 18 21 23 26 30

转载地址:https://blog.csdn.net/m0_45689014/article/details/112974249 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:力扣 剑指offer05 替换空格
下一篇:C++ 集合类

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月29日 14时53分54秒