在二维数组中查找一个数
来源:互联网 发布:dota2公开比赛数据 编辑:程序博客网 时间:2024/05/16 20:29
题目:在一个二维数组中,每一行都按照从左到右递增的顺序,每一列都按照从上到下递增的顺序排序,编写一个函数,输入这样的一个二维数组和一个整数。判断该整数是否在二位数组中。
思路:首先选取数组右上角的数字,如果该数字等于要查找的数字,则查找结束。如果该数字大于要查找的数字,剔除这个数字所在的列。如果该数字小于要查找的数字,则提出该数字所在的行。这样每一步都可以缩小查找的范围,直到找出要查找的数字,或没有找到。
#include<iostream>using namespace std;//bool Find(int **arr, int rows, int cols, int FindNum) //动态二位数组传参bool Find(int arr[][4], int rows, int cols, int FindNum) //静态二维数组传参{ if (arr != NULL && rows > 0 && cols > 0) { int row = 0; int col = cols - 1; while (row < rows && col >= 0) { if (arr[row][col] == FindNum) { return true; break; } else if (arr[row][col] > FindNum) { col--; } else { row++; } } } return false;}void Test(){ int FindNum = 7; int arr[4][4] = { 1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15 }; bool ret = Find(arr, 4, 4, FindNum); if (ret == true) cout << "find " << FindNum << endl; else cout << "not find " << FindNum << endl;}void Test2(){ int rows = 0; int cols = 0; cout << "请输入行数和列数" << endl; cin >> rows; cin >> cols; int **arr = new int *[rows]; for (int i = 0; i < rows; i++) { arr[i] = new int[cols]; } cout << "请输入二位数组" << endl; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cin >> arr[i][j]; } } int FindNum = 8; bool ret = Find(arr, 4, 4, FindNum); if (ret == true) cout << "find " << FindNum << endl; else cout << "not find " << FindNum << endl; //输出二位数组 /*for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cout << arr[i][j]<<" "; } cout << endl; } cout << endl;*/ //释放二位数组 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { delete[]arr[i]; arr[i] = NULL; } delete[]arr; arr = NULL; }}int main(){ Test(); //Test2(); getchar(); return 0;}
0 0
- 在二维数组中查找一个数
- 在一个二维数组中查找一个数
- 查找一个数是否在二维数组中
- java实现在二维数组中查找一个数
- 二维数组中查找一个数
- 在二维数组中查找数
- 在一个按行列递增的二维数组中查找一个数是否存在
- 03+在一个有序的二维数组中查找一个数
- 二维数组中查找一个数是否存在
- 剑指offer之二维数组中查找一个数
- 二维数组中查找是否存在一个数
- 在一个二维数组中查找一个数,这个数组的行和列都是以递增形式存储的
- [2014美团笔试]在二维数组中查找一个数,数组元素的行和列均为升序
- 用二维数组保存99乘法表并且输入一个数查找它是否在数组中存在
- 二维数组中查找一个数,该二维数组是 行和列递增的
- 判断一个数是否在一个二维数组中
- 二维有序数组查找一个数
- 在二维数组中查找一个指定的数值
- Leetcode - Contains Duplicate II
- 这速度 也是醉了
- 如何在调试Window App时,触发 Suspending ,Resuming 等事件
- POJ 1741Tree
- CentOS6.5环境使用keepalived实现nginx服务的高可用性及配置详解
- 在二维数组中查找一个数
- Leetcode 147. Insertion Sort List
- 242. Valid Anagram
- More Effective C++----(6)自增、自减操作符前缀形式和后缀形式的区别
- 1年日记(5月篇)
- 学习Unity射线的创建使用
- 样式和主题
- java并发编程(14)--java的守护线程与非守护线程
- HDU 1544Palindromes(求回文字符串)