剑指offer:二维数组中的查找 代码实现
2015-09-05 15:55
417 查看
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[code]#include <stdio.h> #include <iostream> #include <vector> using namespace std; class Solution { public: bool Find(vector<vector<int> > array,int target) { int rows = 0, columns = 0; int pos_x = 0, pos_y = 0; /* 得到行数 */ rows = array.size(); if(rows == 0) { return false; } /* 得到列数 */ columns = array[0].size(); /* 初始化开始搜寻的位置,从左上角开始*/ pos_x = columns-1; pos_y = 0; while(1) { if(pos_x < 0 || pos_y >= rows) { return false; } if(array[pos_x][pos_y] == target) { return true; } else if(array[pos_x][pos_y] > target) { pos_x--; } else if(array[pos_x][pos_y] < target) { pos_y++; } } return true; } }; int main() { vector<int> vec(4); vector<vector<int> > v; Solution s; int i = 0, j = 0; /* 初始化二维数组 */ for(i = 0; i < 4; i++) { v.push_back(vec); } /* 赋初值 */ for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { v[i][j] = i*4+j +1; } } if(s.Find(v,67) == true) { cout << "true" << endl; } else { cout << "false" << endl; } return 0; }
相关文章推荐
- 剑指Offer系列---(2)求链表中的倒数第k个结点
- AngularJS 应用身份认证的技巧
- js图片延迟加载如何实现
- Arcgis for javascript实现百度地图ABCD marker的效果
- Arcgis for javascript实现百度地图ABCD marker的效果
- 完整的Jquery-easyUI显示分页数据例子
- 使用Bootstrap时遇到的问题
- js 字符串转化成数字
- JS中各种继承方式对比
- jQuery——index()的用法分析
- 排序算法及其复杂度(JavaScript实现)
- 剑指offer:顺时针打印矩阵
- js的日期格式化
- 把图片加载到BufferedImage中
- 偶遇问题 - - JavaScript 取消链接默认行为问题
- js变量传参
- 九度OJ 题目1150:Counterfeit Dollar
- Node.js工具集 bower,yeoman,grunt
- CSS列表和一些变化情况
- 欢迎使用CSDN-markdown编辑器