美文网首页
面试题4:找到二维数组中的数字

面试题4:找到二维数组中的数字

作者: 修司敦 | 来源:发表于2018-11-10 12:07 被阅读0次
在一个 R 行 C 列的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解析:这是一个越往右下角数字越大的数组。那么我们可以从左下角或者右上角开始寻找。如果该数字小于要找的数字,那就往右找,不然就往上找。如果超出了数组的边界了还没找到,那就是没有这个数字。


答案:

//时间复杂度为 O(R+C),空间复杂度为 O(1)
bool Find(const int* matrix, const int rows, const int columns, const int number)
{
    if (nullptr==matrix || rows<=0 || columns<=0) return false;

    int r=rows-1, c=0;
    while (r>=0 && c<columns)
    {
        int pos = r*columns+c;
        if (matrix[pos]==number) return true;
        if (matrix[pos]>number) --r;
        else ++c;
    }

    return false;
}

相关文章

  • 剑指offer

    面试题3——数组中重复的数字 使用LinkedHashMap,有序存放。 面试题4——二维数组中的查找 首先选...

  • 剑指offer面试题分类总结

    数组: 面试题3:数组中重复的数字面试题4:二维数组中的查找面试题21:调整数组顺序使奇数位于偶数前面面试题39:...

  • 2.3.1 数组

    面试题3:数组中重复的数字 面试题4:二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一...

  • 面试题4:找到二维数组中的数字

    在一个 R 行 C 列的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...

  • 1. 数组与矩阵

    [toc] 3. 数组中重复的数字 思路:数组数字范围为1-n,统计count[num]即可 4. 二维数组中的查...

  • 剑指offer第二版-4.二维数组中的查找

    本系列导航:剑指offer(第二版)java实现导航帖 面试题4:二维数组中的查找 题目要求:一个二维数组中,每一...

  • java学习第九章(数组)

    数组 数组的循环 数字12345倒序打印 二维数组 二维数组的循环 数组找到最大值 数组的排序(冒泡算法) 变量交...

  • 二维数组中的查找

    《剑指offer》面试题4:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都...

  • 剑指offer每日一更

    题目 // 面试题4:二维数组中的查找// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按...

  • iOS-算法集锦-剑指offer-百题详解之一

    目录 1. 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 ...

网友评论

      本文标题:面试题4:找到二维数组中的数字

      本文链接:https://www.haomeiwen.com/subject/yztzxqtx.html