剑指offer1: 组类型——二维数组中的查找(给定一个数字,查找是否在该数组中)
1. 思路:
缩小范围
2. 方法:
(1)要查找的数字等于数组中的数字,结束查找过程;
(2)要查找的数字小于数组中的数字,去除该数字右边的数字,在剩下的数字里查找;
(3)要查找的数字大于数组中的数字,去除该数字上边的数字,在剩下的数字里查找。
3. 图例

4. C++实现
#include <iostream>
#include <vector> using namespace std; class Solution {
public://类、公有成员、成员函数
bool Find(int target, vector<vector<int>> array) {//用vector类声明了一个二维数组对象array
int lrow = array.size();//.表示对象的成员运算符,array.size()表示的是array的行数
int lcol = array[].size();//array[0].size()表示的是第一行的列数
if (!array.empty() && rows> && cols>) {
int row = ;
int col = lcol - ;
while (row<lrow && col >= ) {
if (array[row][col] == target) {
cout << "find!" << endl;
return true;
}
else if (array[row][col] > target) {
--col;
}
else {
++row;
}
}
}
cout << "not find" << endl;
return false;
}
}; int main()
{
Solution answer;//声明了一个对象 int array_temp[][] = { ,,,,
,,,,
,,,,
,,,
}; int i, j;
int target=; vector<vector<int>> array();//声明了一个4行的二维动态数组
for (i = ; i < array.size(); i++)
{
array[i].resize();//重置array的每一行向量的元素个数,即每一行有多少列,这里都是4列
} for (i = ; i < array.size(); i++)
{
for (j = ; j < array[].size(); j++)
{
array[i][j] = array_temp[i][j];
}
} answer.Find(target, array);//这个类对象调用类的成员函数
getchar(); return ;
}
参考资料
https://blog.csdn.net/happiness_llz/article/details/82530668
剑指offer1: 组类型——二维数组中的查找(给定一个数字,查找是否在该数组中)的更多相关文章
- 剑指offer:2.二维数组的查找(Java版)
备注:本文参照<剑指offer第二版> 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, 输入这样的一个二维数组和一个整数 ...
- 剑指offer(一):二维数组中的查找
说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...
- 剑指offer一:二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...
- 《剑指Offer》之二维数组中的查找
1.题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 2.代码实现 pu ...
- 剑指 offer set 1 二维数组中查找
总结 1. 二维数组搜索题遇到两个了, 一个是 Leetcode 上 search in 2D matrix. 那道题比较简单, 因为下一行的所有元素大于上一行的. 这道题对二维矩阵的要求比较松, 起 ...
- 剑指offer-面试题3.二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增 的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断该数组中是否有该整数. 算法流程如下: 比如一个 ...
- 剑指offer 01:二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 【剑指offer】规则二维数组查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: ...
- 剑指offer一之二维数组中的查找
一.题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.解答方法: 方法 ...
随机推荐
- 8月清北学堂培训 Day1
今天是赵和旭老师的讲授~ 动态规划 动态规划的基本思想 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 更具体的,假设我们可以计算出小问题的最优解,那么我们凭借此可 ...
- java/servlet/jsp 中String与int相互转换
String ---> int //方式一:Integer(String s) //demo: Integer i = int a = i.intValue() //方式二:static int ...
- Python学习日记(七)——装饰器
1.必备知识 #### 一 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 二 #### def foo(): print ' ...
- UVALive 4254 Processor ——(二分+优先队列处理)
题目是求最小化最大值,很显然是二分,但是二分以后怎么判断mid是否可行并不容易. 代码参考了网上一个博客的代码.巧妙之处在于一秒一秒的考虑,这样可以把处理速度mid直接转化成1秒内实际的量来解决(避免 ...
- 使用linux中,最让人无语的是软件源
使用linux的最大的障碍是软件源的配置和系统的安装,这两个搞定了,坚持使用下去都不是问题,如果实在不行,还可以win10下的linux子系统可以作为基本的使用.下面记录两个软件源: Found 2 ...
- 用tecplot提取数据用于重构模型
本方法还有诸多不完善的地方,转换代码转换格式之后还是需要自己手动分割txt文件,如果数据量太大,手动操作很是辛苦.现在只能得到点的数据,如何重构几何还是问题,UG貌似可以,欢迎交流. 首先在tecpl ...
- nginx 配置简单反向代理
假设端口号是 3000 server { listen ; server_name your.domain; location / { proxy_pass http://127.0.0.1:3000 ...
- ubuntu18.04 systemctl
systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本.systemd 的特性有:支持并行化任务:同一时候採用 socket 式与 D-Bus 总线式激活服务 ...
- VScode优化记录
主题: One Dark Pro VS Code 官网页面 这是为 VS Code准备的 One Dark 主题,他是 Atom 标志性的主题.需要我说更多吗?我喜欢这个主题. Mon ...
- Flex 布局教程实例
Flex 布局教程实例 一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 F ...