剑指offer——面试题4:二维数组中的查找
- // 面试题4:二维数组中的查找
- // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按
- // 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个
- // 整数,判断数组中是否含有该整数。
- #include <cstdio>
- bool Find(int* matrix, int rows, int columns, int number)
- {
- bool found = false;
- if(matrix != nullptr && rows > && columns > )
- {
- int row = ;
- int column = columns - ;
- while(row < rows && column >=)
- {
- if(matrix[row * columns + column] == number)
- {
- found = true;
- break;
- }
- else if(matrix[row * columns + column] > number)
- -- column;
- else
- ++ row;
- }
- }
- return found;
- }
- // ====================测试代码====================
- void Test(char* testName, int* matrix, int rows, int columns, int number, bool expected)
- {
- if(testName != nullptr)
- printf("%s begins: ", testName);
- bool result = Find(matrix, rows, columns, number);
- if(result == expected)
- printf("Passed.\n");
- else
- printf("Failed.\n");
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数在数组中
- void Test1()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test1", (int*)matrix, , , , true);
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数不在数组中
- void Test2()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test2", (int*)matrix, , , , false);
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数是数组中最小的数字
- void Test3()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test3", (int*)matrix, , , , true);
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数是数组中最大的数字
- void Test4()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test4", (int*)matrix, , , , true);
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数比数组中最小的数字还小
- void Test5()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test5", (int*)matrix, , , , false);
- }
- // 1 2 8 9
- // 2 4 9 12
- // 4 7 10 13
- // 6 8 11 15
- // 要查找的数比数组中最大的数字还大
- void Test6()
- {
- int matrix[][] = {{, , , }, {, , , }, {, , , }, {, , , }};
- Test("Test6", (int*)matrix, , , , false);
- }
- // 鲁棒性测试,输入空指针
- void Test7()
- {
- Test("Test7", nullptr, , , , false);
- }
- int main(int argc, char* argv[])
- {
- Test1();
- Test2();
- Test3();
- Test4();
- Test5();
- Test6();
- Test7();
- return ;
- }
剑指offer——面试题4:二维数组中的查找的更多相关文章
- 剑指offer面试题3 二维数组中的查找(c)
剑指offer面试题三:
- 剑指offer面试题3二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 需要与面试官确认的是,这 ...
- 剑指offer面试题4: 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 剑指offer面试题3 二维数组中的查找 (java)
注:java主要可以利用字符串的length方法求出长度解决这个问题带来方便 public class FindNum { public static void main(String[] args) ...
- 剑指Offer - 九度1384 - 二维数组中的查找
剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
- 剑指offer【01】- 二维数组中的查找(Java)
在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...
- 剑指offer第二版-4.二维数组中的查找
面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增.输入一个整数,判断数组中是否含有该整数 /** * @since 2019年2月13日 下午5:08:5 ...
- 剑指Offer编程题1——二维数组中的查找
剑指Offer编程题1---------------二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完 ...
- 【剑指Offer】1、二维数组中的查找
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否 ...
- 剑指offer(3)——二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路: 首先选取数组中右上 ...
随机推荐
- eclipse——Maven创建JavaWeb工程
打包方式改为war 问题:webapp目录下缺少web.xml文件 先勾选掉Dynamic Web Services 点击Applay 再勾选上Dynamic Web Services ,目的是为了产 ...
- hdu1269 Tarjan强连通分量 模板(转)
#include<stdio.h> #include<iostream> #include<vector> using namespace std; ; vecto ...
- HTTP文件上传插件开发文档-JSP
版权所有 2009-2016 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/http-u ...
- 【Java学习01】:win7环境安装JDK
最近开始学习java,从第一步做起吧.win7中安装jdk非常简单,大牛勿喷. 1.下载JDK并执行安装. 访问网站www.java.com,选择win7版本的JDK下载.下载后双击安装(比较慢,耐心 ...
- ABP源码uml类图
陆陆续续学习ABP框架有一段时间了,阳光铭睿的入门教程和HK Zhang的源码分析文章对我的学习帮助都很大.之所以会花这么大工夫去学习ABP.看ABP的源代码,一是因为本人对于DDD也非常有兴趣,AB ...
- <%@ include > 与< jsp:include >
include指令表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的文本静态地包含过去.也就是说,会把被包含的页面拷贝到包含的页面中指令所在的位置. 语法格式:<%@ include ...
- Oracle累计函数
今天遇到一个客户的报表需求,在shipment的报表中要查看该shipment中的每个PO的采购数量,当前shipment的出货数量以及累计的所有出货数量. 要有累计的出货数,并且是要有顺序的累计出货 ...
- 多态实现的原理------新标准c++程序设计
“多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定.例子: #include<iostream> using namespac ...
- 类的互相包含------新标准c++程序设计
#include<iostream> using namespace std; class A; class B{ public: void f(A* pt){}; } class A{ ...
- [Algorithm]排序
一.排序算法 1.插入排序 1) 直接插入排序:(插入类) 1 void InsertSort( ElemType R[], int n ) 2 { 3 for ( int i = 2; i < ...