剑指offer(一):二维数组中的查找
说明:
1.本系列是根据《剑指Offer》这个系列做的一个小笔记。
2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难。
3.刚开始准备刷LeetCode、LintCode,突然看见一个大神博客,同为研究僧为啥差别那么大呢?
4.在别人基础之上进行部分优化,总结自己的观点。
问题:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
1.普通想法:行列循环,依次寻找。
2.升级思想:以行和列为单位,以一行或者一列的最大一个数去和目标对比(等于目标直接结束、小于目标向下一行或列的最大值进行对比、大于目标值以此行或者列为目标进行查找),这些循环都是迭代的,当然也可以用循环。
3.终极思想:以第二个思想为基础,搜索目标改为二分法,这种方法平均效率很高。
4.~~能力有限欢迎补充!
C++代码实现:(本文以第二个为例子)
#include<iostream>
using namespace std;
bool FindNum(int* num, int aim); int main()
{
cout << "The first code Answer is : ";
int a[][] = { {,,,,},{,,,, }, {, , , , },{, , , , },{, , , , } };
cout << FindNum(a[],) << endl;
while ();
return ;
} //@num:二维数组
//@aim:目标数
//@存在返回True,不存在返回False
bool FindNum(int* num, int aim)
{
if (num == NULL) return false;
int rows = sizeof(num) / sizeof(num[]);
int cols = sizeof(num[]);
for (int i = cols - ; i >= ; i--)
{
if (*(num + *cols +i) == aim) return true;//相等退出
else if (*(num + * cols + i)>aim) continue;//大于删除列
else//小于查找列
{
for (int j = ; j<cols; j++)
{
if (*(num + j * cols + i) == aim) return true;
else continue;
}
return false;
}
}
return false;
}

参考:http://cuijiahua.com/,直接跟着这位大神博客刷题的,部分思路参考大神。
剑指offer(一):二维数组中的查找的更多相关文章
- 剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
- 剑指 Offer 04. 二维数组中的查找 (思维)
剑指 Offer 04. 二维数组中的查找 题目链接 本题的解法是从矩阵的右上角开始寻找目标值. 根据矩阵的元素分布特性, 当目标值大于当前位置的值时将row行号++,因为此时目标值一定位于当前行的下 ...
- 《剑指offer》 二维数组中的查找
本题目是<剑指offer>中的题目 二维数组中的查找 题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
- 【Java】 剑指offer(3) 二维数组中的查找
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上 ...
- [剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
- 《剑指Offer 1.二维数组中的查找》2019-03-25
剑指Offer 第一题 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数 ...
- Go语言实现:【剑指offer】二维数组中的查找
该题目来源于牛客网<剑指offer>专题. 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一 ...
- 【剑指offer】二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 注意点:要注意特殊 ...
- 剑指Offer 1. 二维数组中的查找 (数组)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 剑指offer(2) - 二维数组中的查找
题目: 在一个二维数组中.每一行都依照从左到右递增的顺序排序,每一列都依照从上往下递增的顺序排序.请写一个函数,输入一个二维数组和一个整数,推断数组中是否含有该整数. 比如以下的二维数组就是每行.每列 ...
随机推荐
- cmp命令详解
Linux cmp命令 Linux cmp命令用于比较两个文件是否有差异.主要用来比较两个二进制文件 当相互比较的两个文件完全一样时,则该指令不会显示任何信息.若发现有所差异,预设会标示出第一个不同之 ...
- 网易云课堂Dubbo学习笔记
可以在这里下载dubbo的原码:https://github.com/alibaba/dubbo Dubbo架构原理:
- Linux命令之shutdown
shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失 ...
- PHP CutyCapt生成网页url截图
Requirements: 1,需要一个linux系统. 2, X-Server.(在命令行下实现对X-server的模拟,渲染图形进行缓存)-在没有安装X-Server的环境下提供图像渲染) Age ...
- linux与Windows使用编译区别及makefile文件编写
一.Windows与:Linux嵌入式开发区别 Windows下编辑.编译.执行 编辑: sourceInsight:ADS: 编译:指定链接地址,指定链接顺序,编译 执行:烧写到单板再启动 Linu ...
- jenkins 邮件配置一
jenkins默认的邮件通知 我先讲解下,默认的. jenkins默认就有一个邮件通知,只是太简单的,不能个性化或者说定制化. 设置系统管理员邮件地址 邮件通知 ①SMTP服务器:如果你使用的是公司邮 ...
- C#中数据库事务、存储过程基本用法
SQL 事务 public bool UpdateQsRegisterSql(List<string> ids, int newQueueId, string newQueueName) ...
- 黄聪:Windows+PHP7+ImageMagick
需要Apache下才适用,Nginx没测试过~ Step1 把ImageMagick对应版本下载下来(ps: 我这里下载的是这个版本ImageMagick-6.9.3-7-vc14-x86.zip) ...
- <亲测>阿里云centos7 挂载数据盘配置
阿里云centos7 挂载数据盘配置 2018年07月17日 15:13:53 阅读数:235更多 个人分类: linux阿里云ECS数据盘挂载 查看磁盘情况 fdisk -l 其中/dev/v ...
- SpringSecurity-ChannelProcessingFilter的作用
ChannelProcessingFilter决定的是web请求的通道,即http或https. 在springsecurity配置文件中添加这样一行 <intercept-url patter ...