有序二维数组中查找指定元素
2017-03-18 19:41
281 查看
题目:在二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入一个二维数组和整数,判断二维数组中是否含有该整数,有的话返回该整数的位置,更深一步,如果含有该整数并输出该整数的个数。
首先需要纠正一个概念,二维数组就是二维指针的概念。二维数组具有自动寻址功能,但是二维指针却不可以。详情参考http://blog.csdn.net/liyongbao1988/article/details/7463481
解决思路:
1.既然是从数组中查找一个数字,那么就完全遍历这个数组即可。通过两层循环来实现。
2.因为该二维数组的有序性,所有可以考虑如何快速的找到这个数字:首先想到的就是从第一行第一列开始进行查找,发现所要查找的整数等于当前值就返回,大于当前值则无法进行下一步的判断,所以可以考虑如何利用有序性这一特点。如果能想到从右上角或者是左下角开始进行查找,就会发现查找的快速途径。
首先需要纠正一个概念,二维数组就是二维指针的概念。二维数组具有自动寻址功能,但是二维指针却不可以。详情参考http://blog.csdn.net/liyongbao1988/article/details/7463481
解决思路:
1.既然是从数组中查找一个数字,那么就完全遍历这个数组即可。通过两层循环来实现。
2.因为该二维数组的有序性,所有可以考虑如何快速的找到这个数字:首先想到的就是从第一行第一列开始进行查找,发现所要查找的整数等于当前值就返回,大于当前值则无法进行下一步的判断,所以可以考虑如何利用有序性这一特点。如果能想到从右上角或者是左下角开始进行查找,就会发现查找的快速途径。
#include <iostream> using namespace std; bool findNum(int arr[][4], int num, int len, int width, int& x, int& y); void main() { int x = 0; int y = 0; int arr[][4] = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10 ,13}, { 6, 8, 11, 15}, { 8, 10, 13, 16}, }; findNum(arr, 16, 4, 5, x, y); cout << "x=" << x << endl; cout << "y=" << y << endl; } /* para: arr 二维数组 num 要查找的数字 len 二维数组的长度 width 二维数字的宽度 x,y 要查找数字的坐标 return:返回是否查找成功 */ bool findNum_2(int arr[][4], int num, int len, int width, int& x, int& y) { int i = 0; int j = len - 1; while (i < width && j > 0)//从右上角开始遍历每一列 { if (arr[i][j] == num) { x = i; y = j; return true; } else if (arr[i][j] > num) { --j; } else { ++i; } } return false; }
相关文章推荐
- 3 - 在有序二维数组中查找元素
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 有序二维数组查找元素
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- 每天一道LeetCode-----在有序的二维数组中查找某个元素
- merge两个有序数组 & 查找一个有序数组中指定元素
- Python 查找有序列表中指定元素所在位置
- 在查找有序二维数组中查找元素
- 查找有序二维数组中的元素
- 有序二维数组查找元素
- KT学算法(二)——循环有序数组查找指定元素
- 在有序二维数组快速查找元素
- 使用TinyXml 遍历XML元素名,查找并返回指定元素
- JQuery 在文档中查找指定name的元素并移除的实现方法
- 在.NET中使用XPath查找指定元素时遇到的麻烦(以dataConfiguration.config为例)
- 有序二维数组的查找
- 用递归查找有序二维数组的方法详解
- 趣题:在双向有序链表中查找指定的数
- 查找循环有序数组的元素
- (java)二维有序数组中查找元素