题目:在一个二维数组中,对每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
// 二维数组中的查找
#include <iostream>
using namespace std;
int SearchMatrix(int *arr, int key, int row, int col)
{
if (arr == NULL)
return ;
int row_index,col_index,pivotkey; int y = sizeof(arr)/sizeof(int); // for test
cout << y <<endl; // y = 1 row_index = ;
col_index = col - ; while (row_index <= row - && col_index >= )
{
pivotkey = *(arr + row_index * col + col_index);
if (pivotkey == key)
return ;
else if (pivotkey > key)
{
col_index --;
}
else
{
row_index ++;
}
}
return ;
}
int main()
{
int res, row = , col = ;
int arr[][] = {{, , , },{, , , }, {, , , }, {, , , }};
int y = sizeof(arr)/sizeof(int);
cout << y << endl; // 输出为16
row = (sizeof(arr)/sizeof(int)) / (sizeof(arr[]) / sizeof(int));
col = sizeof(arr[])/sizeof(int);
res = SearchMatrix((int *)arr, , row, col);
if (res == )
cout << "found it" <<endl;
else
cout << "not found it" <<endl;
return ;
}
在写的时候发现一个问题,就是二维数组作为参数传入函数时,会有多种方法
第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][4]
第二种方法是传递指针数组方式,即int (*a)[4] , 这句话声明了一个指针变量(即数组指针),这个指针指向由4个int组成的数组 ,是一个一级指针
第三种是传递指针方法,即上边程序的方法。
不管是哪一种方法,在写程序的实参时,都要注意要匹配,有时候要进行一些强制类型的转换。
比如:
int a[3][4];
可以理解为a数组是三个元素组成的一维数组,这三个数组的名字分别为a[0], a[1], a[2],其中的每个元素又是由四个元素组成的一维数组。
a是三个一维数组a[0], a[1], a[2]的首地址
而a[0], a[1], a[2]又是三个数组名,分别表示三个一维数组的首地址。
二维数组中的查找问题--剑指offer面试题3的更多相关文章
-
二维数组中的查找(剑指offer_4)
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序.给定一个数,判断这个数是否在该二维数组中. Consider the following matrix: [ [1, 4, 7, 11 ...
-
《剑指Offer》面试题-二维数组中的查找
题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...
-
《剑指offer》 二维数组中的查找
本题目是<剑指offer>中的题目 二维数组中的查找 题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
-
剑指offer【01】- 二维数组中的查找(Java)
在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...
-
【Java】 剑指offer(3) 二维数组中的查找
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上 ...
-
[剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
-
剑指Offer - 九度1384 - 二维数组中的查找
剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
-
剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
-
【剑指Offer面试题】九度OJ1384:二维数组中的查找
下决心AC全部剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> ...
随机推荐
-
C语言内存分区
在C/C++中,内存分成5个区,他们分别是堆.栈.*存储区.全局/静态存储区和常量存储区. 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变 ...
-
修改 页面中默认的select样式
select样式定制: select { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ border: solid 1px #000; /*很关键:将默认的select选择 ...
-
python项目在windows下运行出现编码错误的解法
在启动文件里面加入 import sysreload(sys) sys.setdefaultencoding('GB2312') 这样在windows下调试运行神马的,就不会报错了. 当然发布时,建议 ...
-
Revit 二次开发 (二) 倾斜的板
在Revit二次开发过程中,建立一个倾斜的板是可以通过如下方法进行的: // // 摘要: // Creates a slab within the project with the given ho ...
-
设计模式总结5--命令模式 commend pattern
命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象.就像我们去餐厅,点菜是找服务员,然后服务员去让厨师做菜而不是我们直接找厨师做菜 public interface Commend { ...
-
【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施
原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...
-
MULE-ET0 、 ET1、ET2、PT1、PT2
设计验证阶段中的五个样车试制概念 骡子车( mule car ) ET0 第一轮设计工程样车试制 ET1 第二轮设计工程样车试制 ET2 第一轮产品工装样车试制 PT1 第二轮产品工装样车试制 PT2 ...
-
Mysql安装与主从配置
安装MySql 操作系统:Windows Server 2008 R2 Standard MySql版本:mysql-5.7.17-winx64 第一步:解压mysql-5.7.17-winx64.z ...
-
bzoj千题计划219:bzoj1568: [JSOI2008]Blue Mary开公司
http://www.lydsy.com/JudgeOnline/problem.php?id=1568 写多了就觉着水了... #include<cstdio> #include< ...
-
$\mathfrak {reputation}$
\(\mathfrak {reputation}\) 举世盛名 身败名裂