// 二维数组中的查找
// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按
// 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个
// 整数,判断数组中是否含有该整数。 #include <iostream>
using namespace std; bool serach_in(int* matrix, int rows, int cols, int number)
{
bool flag = false; if ((matrix != NULL) && (rows > ) && (cols > ))//判断不能忘
{
int row = , col = cols - ;
while ((row < rows) && (col >= ))
{
if (matrix[row*cols + col] == number)
{
flag = true;
break;
}
else if (matrix[row*cols + col] > number)//用实例分析过程,思想比程序更重要
col--;
else
row++;
}
} return flag;
} void test1()//要查找的数在数组中
{
cout << "Test1:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test2()//要查找的数不在数组中
{
cout << "Test2:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test3()//要查找的数是数组中最小的数字
{
cout << "Test3:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test4()//要查找的数是数组中最大的数字
{
cout << "Test4:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test5()//要查找的数比数组中最小的数字还小
{
cout << "Test5:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test6()//要查找的数比数组中最大的数字还大
{
cout << "Test6:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test7()//鲁棒性测试,输入空指针
{
cout << "Test6:\n";
bool result;
result = serach_in(NULL, , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} int main()
{
test1();
test2();
test3();
test4();
test5();
test6();
test7();//重点,鲁棒性测试 system("pause");
}

《剑指offer》第四题(二维数组中的查找)的更多相关文章

  1. 剑指Offer - 九度1384 - 二维数组中的查找

    剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...

  2. 《剑指Offer》面试题-二维数组中的查找

    题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...

  3. 剑指offer【01】- 二维数组中的查找(Java)

    在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...

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

    面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增.输入一个整数,判断数组中是否含有该整数 /** * @since 2019年2月13日 下午5:08:5 ...

  5. 剑指offer面试题3二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 需要与面试官确认的是,这 ...

  6. 剑指offer面试题4: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  7. 【剑指Offer】1、二维数组中的查找

      题目描述:   在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否 ...

  8. 剑指offer(3)——二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路: 首先选取数组中右上 ...

  9. 剑指offer学习读书笔记--二维数组中的查找

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序.请设计一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有这个整数. 1 2 8 9 2 4 9 1 ...

  10. 【剑指Offer】01、二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

随机推荐

  1. Android adb.exe程序启动不起来处理方法

    经常遇到 Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be ...

  2. malloc 实现原理

    1. Reference: 如何实现一个malloc http://blog.codinglabs.org/articles/a-malloc-tutorial.html 2.

  3. pdo sqlserver

    PHP代码如果想要用以上的方式兼容linux服务器和windows服务器,那么大概的示例代码是这样的. <?php header("Content-type: text/html; c ...

  4. C++中的访问权限

    C++中类的成员的权限: private:只能由该类的成员函数,友元函数访问,不能被该类的对象访问. protected:除了private外还能被子类的函数访问,同样不能被该类的对象访问. publ ...

  5. 在Java中使用Sqlite数据库

    一.安装 下载最新的 Sqlite Jdbc 驱动程序jar文件,并添加到Java工程的class路径下: 二.使用 以 sqlite Jdbc 驱动版本为 sqlitejdbc-v56.jar 为例 ...

  6. 组合类C++

    C++中类的组合 ※组合的概念 ×类中的成员是另一个类的对象. ×可以在已有的抽象的基础上实现更加复杂的抽象. 通过对复杂对象进行分解.抽象,使我们能够将一个复杂对象 理解为简单对象的组合. 分解得到 ...

  7. 手撕vue-cli配置——webpack.base.conf.js篇

    在开始写webpack.base.conf.js(简称base)之前,我们先来看一下vue-loader.conf.js这个文件,毕竟在base中我们还会用到: 'use strict' //引入前一 ...

  8. 浅谈elasticsearch 集群

    elasticsearch 集群 摘要: elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样 ...

  9. c++的友元类、方法及其益处

    在java中,我们知道除了public和private,protected外,还有默认的包可见性访问级别,虽然如此,很多时候出于早期设计缺陷的原因,我们需要访问一些包或者protected可见性级别的 ...

  10. 04:获取zabbix监控信息

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...