剑指offer 二维数组的查找
来源:互联网 发布:apk优化 编辑:程序博客网 时间:2024/05/16 13:46
题目:在一个二维数组数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列.请完成一个函数,输入这样的一个维位数组和整数,判断数组中是否含有该整数.
例如对于下面的矩阵
如果我们要查找7,则返回true,如何查找5,则返回false.
代码实现:
#include <vector>#include <iostream>bool findElem(const std::vector<int> v, int rows, int cols, int number){ bool found = false; if (!v.empty()) { int row = 0; int col = cols -1; while (row < rows && col >=0) { if (v[cols*row+col] == number) { found = true; break; } else if (v[cols*row+col] > number) { --col; } else { ++row; } } } return found;}int main(){ std::cout << "输入数组的行rows和列cols : "; int rows, cols; std::cin >> rows >> cols; std::cout << std::endl << "输入数组中的元素: " << std::endl; std::vector<int> v; //数组中的每个元素用elem表示 int elem; for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) { std::cin >> elem; v.push_back(elem); } std::cout << "打印输入的数组 : " << std::endl; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { std::cout << v[i*cols+j] << "\t"; } std::cout << std::endl; } std::cout << "输入要查找的元素 : " << std::endl; //要查找的数number int number; while (std::cin >> number) { if(findElem(v, rows, cols, number)) std::cout << "found success" << std::endl; else std::cout << "non found " << number << std::endl; std::cout << "输入要查找的元素 : " << std::endl;; } return 0;}
阅读全文
0 0
- 剑指offer - 二维数组的查找
- 剑指offer—二维数组的查找
- 二维数组的查找(剑指offer)
- 剑指offer--二维数组的查找
- 《剑指offer》之二维数组的查找
- 剑指offer--二维数组的查找
- 【剑指offer】二维数组的查找
- 【剑指offer】二维数组的查找
- 剑指offer系列----二维数组的查找
- 剑指offer-1、二维数组的查找
- 剑指offer 3---二维数组的查找
- 剑指offer之二维数组的查找
- 剑指Offer--1.二维数组的查找
- 剑指Offer--二维数组的查找
- 剑指offer(一) 二维数组的查找
- 剑指offer—二维数组的查找
- 剑指offer 二维数组的查找
- 剑指offer编程---二维数组的查找
- xml入门、解析、创建及规范
- ssh设置字段默认值
- redis shutdown (error) ERR Errors trying to SHUTDOWN. Check logs.
- 171108-函数作用域和存储特性学习【连续第十六天】
- 程序员的自我修养--可执行文件的装载与进程
- 剑指offer 二维数组的查找
- 位操作算法基本操作1
- 让你的 WordPress 网站更安全的5 个方法
- java String[] args理解
- zipkin+elasticsearch全链路跟踪(springcloud)
- jenkins+selenium grid实现分布式自动化测试
- 【功能笔记】Ubuntu查看系统资源占用(内存,cpu和进程) {转载}
- php get url
- Thread必须知道的几个概念