剑指offer面试题:二维数组中的查找
来源:互联网 发布:环保数据采集传输仪 编辑:程序博客网 时间:2024/06/05 06:06
二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
完整代码及测试用例:
#include<iostream>using namespace std;// 二维数组matrix中,每一行都从左到右递增排序// 每一列都从上到下递增排序bool Find(int* matrix, int rows, int cols, int number){bool found = false;if (matrix != NULL&&rows > 0 && cols > 0){int row = 0, col = cols - 1;while (row<rows&&col>=0){if (matrix[row*cols + col] == number){found = true;break;}else if(matrix[row*cols + col] > number){--col;}else{++row;}}}return found;}// ====================测试代码====================void Test(char* testName, int* matrix, int rows, int cols, int number, bool expected){if (testName != NULL){cout << testName << " begins: ";}bool result = Find(matrix, rows, cols, number);if (result == expected){cout << "Passed." << endl;}else{cout << "Failed." << endl;} }void Test1(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数在数组中int matrix[4][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test1", (int*)matrix, 4, 4, 7, true);}void Test2(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数不在数组中int matrix[][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test2", (int*)matrix, 4, 4, 5, false);}void Test3(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数是数组中最小的数字int matrix[][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test3", (int*)matrix, 4, 4, 1, true);}void Test4(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数是数组中最大的数字int matrix[][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test4", (int*)matrix, 4, 4, 15, true);}void Test5(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数比数组中最小的数字还小int matrix[][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test5", (int*)matrix, 4, 4, 0, false);}void Test6(){// 1 2 8 9// 2 4 9 12// 4 7 10 13// 6 8 11 15// 要查找的数比数组中最大的数字还大int matrix[][4] = { { 1, 2, 8, 9 },{ 2, 4, 9, 12 },{ 4, 7, 10, 13 },{ 6, 8, 11, 15 } };Test("Test6", (int*)matrix, 4, 4, 16, false);}void Test7(){// 鲁棒性测试,输入空指针Test("Test7", NULL, 0, 0, 16, false);}int main(){Test1();Test2();Test3();Test4();Test5();Test6();Test7();system("pause");return 0;}
运行结果:
Test1 begins: Passed.
Test2 begins: Passed.
Test3 begins: Passed.
Test4 begins: Passed.
Test5 begins: Passed.
Test6 begins: Passed.
Test7 begins: Passed.
请按任意键继续. . .
0 0
- 《剑指Offer》面试题-二维数组中的查找
- 《剑指offer》面试题三 二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 剑指Offer:面试题3 二维数组中的查找
- 剑指offer:面试题三:二维数组中的查找
- 《剑指Offer》面试题3:二维数组中的查找
- 剑指offer面试题3-二维数组中的查找
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 二维数组中的查找(剑指offer面试题3)
- 【剑指offer】 面试题3: 二维数组中的查找
- 《剑指Offer》面试题:二维数组中的查找
- 剑指Offer面试题3:二维数组中的查找
- 剑指Offer:面试题3 二维数组中的查找
- 剑指Offer 面试题三:二维数组中的查找
- 剑指offer-面试题3:二维数组中的查找
- 剑指offer面试题3之二维数组中的查找
- 剑指offer面试题3—二维数组中的查找
- 修改数据库字符集
- require.js+vue+vue-router+vue-resource开发微信上传图片组件
- JavaScript判断浏览器版本
- Redis主从复制
- 搭建SpringMVC+Mybatis轻量级框架
- 剑指offer面试题:二维数组中的查找
- 【SQL】函数使用
- 一篇关于_安卓内存抖动的文章
- MotionEvent 概述
- 什么是servlet
- java程序员成长路线
- 51nod1007 正整数分组
- vmware ubuntu 复制粘贴
- JAVA基础篇——你好,世界