有序矩阵查找练习题
2016-03-16 21:15
85 查看
传送门:http://www.nowcoder.com/courses/1/2/18
题目描述
现在有一个行和列都排好序的矩阵,请设计一个高效算法,快速查找矩阵中是否含有值x。
给定一个int矩阵mat,同时给定矩阵大小nxm及待查找的数x,请返回一个bool值,代表矩阵中是否存在x。所有矩阵中数字及x均为int范围内整数。保证n和m均小于等于1000。
测试样例:
时间复杂度可以做到O(M+N),额外空间复杂度为O(1);
AC代码
class Finder {
public:
bool findX(vector<vector<int> > mat, int n, int m, int x) {
int curRow=0,curCol=m-1;
while (true) {
if(mat[curRow][curCol]==x)
return true;
else{
if(x>mat[curRow][curCol])
curRow++;
else
curCol--;
if(curRow>=n||curCol<0)
return false;
}
}
}
};
题目描述
现在有一个行和列都排好序的矩阵,请设计一个高效算法,快速查找矩阵中是否含有值x。
给定一个int矩阵mat,同时给定矩阵大小nxm及待查找的数x,请返回一个bool值,代表矩阵中是否存在x。所有矩阵中数字及x均为int范围内整数。保证n和m均小于等于1000。
测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3,3,10
返回:false
时间复杂度可以做到O(M+N),额外空间复杂度为O(1);
AC代码
class Finder {
public:
bool findX(vector<vector<int> > mat, int n, int m, int x) {
int curRow=0,curCol=m-1;
while (true) {
if(mat[curRow][curCol]==x)
return true;
else{
if(x>mat[curRow][curCol])
curRow++;
else
curCol--;
if(curRow>=n||curCol<0)
return false;
}
}
}
};
相关文章推荐
- jquery判断checkbox是否选中及改变checkbox状态
- CodeForces 148D Bag of mice(概率DP)
- 欢迎使用CSDN-markdown编辑器
- JSP内置对象
- java7新特性之Diamond syntax
- Smarty的配置
- scrollview的相关问题
- 二维数组中的查找
- iOS设计之 表格UITableView 的参数与视图页面之间的相互传递
- 2016/3/16 高级查询 ①连接查询 ②联合查询 ③子查询 无关 相关
- [code]最长回文子串
- Java单例模式深入详解
- 排序算法小结
- Activity启动模式
- Codeforces Round #334 (Div. 2) B C D
- [DP 上下界最小流] BZOJ4200 [Noi2015]小园丁与老司机
- Android中常用的存储方式
- Android中ListView的几种常见的优化方法
- misc_register杂项设备
- 两个Hacker,专门Patch TObject