C#版 - 小红书后台开发面试题: 二维数组中的查找
二维数组中的查找
热度指数:24274 时间限制:1秒 空间限制:32768K
本题知识点: 查找
在线提交网址:
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&rp=1
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数,如果不能找到就输出-1,如果含有请输出所在行数和列数。
给定: n*n矩阵
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
target = 5
Output:
2 2
target = 26
Output:
5 4
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
vector<int> searchMatrix(vector<vector<int> > arr, int target)
{
vector<int> res;
int row = arr.size();
int col = arr[0].size();
int i = 0, j = col-1;
bool found = false;
while(i<=j && j<col && i < row)
{
if(arr[i][j] == target)
{
found = true;
res.push_back(i+1);
res.push_back(j+1);
break;
}
else if(arr[i][j] < target) i++;
else j--;
}
if(arr.size() == 0 || found == false)
{
res.push_back(-1);
return res;
}
return res;
}
int main()
{
vector<int> res;
int arr[][3] = {{1,3,5}, {2,4,6}, {5,7,9}};
vector<vector<int> > input;
input.push_back(vector<int> (arr[0], arr[0]+3) );
input.push_back(vector<int> (arr[1], arr[1]+3) );
input.push_back(vector<int> (arr[2], arr[2]+3) );
res = searchMatrix(input, 12);
for(auto it:res)
cout<<it<<' ';
cout<<endl;
return 0;
}
牛客网AC代码:
class Solution {
public:
bool Find(vector<vector<int> > array,int target) {
int rows=array.size(); // 行数
int cols=array[0].size(); // 列数
int i=0, j=cols-1;
bool found = false;
while(j>=0 && j<cols && i<rows) // i>=0 默认满足,无须再判断
{
if(array[i][j] == target) { found = true; break; }
else if(array[i][j] > target) j--; // 如果矩阵右上角的值比target大,删除所在的列,列号-1
else i++; // 如果矩阵右上角的值不大于target,删除所在的行,行号+1
}
return found;
}
};
C#版 - 小红书后台开发面试题: 二维数组中的查找的更多相关文章
- 《剑指Offer》面试题-二维数组中的查找
题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...
- 剑指Offer面试题 二维数组中的查找
题目链接:https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e 题目大意: 略 分析: 对萌醒很开拓思维 ...
- 剑指Offer:面试题3——二维数组中的查找(java实现)
问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:取数组中的元素与 ...
- 【面试题003】c数组做为参数退化的问题,二维数组中的查找
[面试题003]c数组做为参数退化的问题,二维数组中的查找 一,c数组做为参数退化的问题 1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界, 通过下面 ...
- 【剑指offer】面试题 4. 二维数组中的查找
面试题 4. 二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- 剑指offer——面试题4:二维数组中的查找
// 面试题4:二维数组中的查找 // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按 // 照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 // 整数 ...
- 【剑指Offer面试题】九度OJ1384:二维数组中的查找
下决心AC全部剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> ...
- 剑指offer第二版-4.二维数组中的查找
面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增.输入一个整数,判断数组中是否含有该整数 /** * @since 2019年2月13日 下午5:08:5 ...
- 《剑指offer》面试题3:二维数组中的查找
面试题3:二维数组中的查找 面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的个二维数组和一个整数,判 ...
随机推荐
- pycharm的list的应用
li = [11,22,22,33,44] v = li.count(22) print (v) #输出结果2 #计算元素的次数 count的应用 li = [11,22,33,22,44] li.e ...
- poj1681 Network
题目链接 https://cn.vjudge.net/problem/17712/origin Andrew is working as system administrator and is pla ...
- VUE2+elementUI前端实现 三级省市联动select
html: <el-form-item label="选择地区:"> <el-select size="small" style=" ...
- 图论之Dijkstra算法
Dijkstra算法是图论中经典的最短路径算法之一,主要用于解决单源最短路径问题. 单源最短路径问题,即求某个源节点到其他各个节点的最短路径. Dijkstra算法采用了贪心算法的思想,如图求1号节点 ...
- 我的 FPGA 学习历程(09)—— 时序逻辑入门
讲到这篇时,组合逻辑就告一段落了,下面是一些总结: 描述组合逻辑时,always 语句中的敏感信号列表中需要列出全部的可能影响输出的变量 描述组合逻辑时,always 语句中的赋值总是使用阻塞赋值符号 ...
- linux查看分区是否开启acl权限
1.为什么需要ACL权限 ACL的全称是 Access Control List (访问控制列表) .对于文件或者目录,都有相应的操作权限 r(read 读),w(write 写),x(execute ...
- 爬虫下载City Scape数据
爬虫下载City Scape数据 CityScape是道路场景的经典数据集,但是如right Img8bit_sequence_trainvaltest达到322G,需要用服务器下载比较方便. 需求场 ...
- 调用获取学生信息的接口,保存到excel里面
# 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...
- Jquery weui picker 支持label和value
万年没更新了. 最近用jquery weui. 在使用picker时需要一些问题. 就是让picker 显示label, 但是取值的时候取value用于存储. 官网例子如下 Jquery-weui 官 ...
- 用Java写hello world
public class HelloWorld{ public static void main(String[] args){ System.out.println("hello worl ...