从二维数组中查找某个元素
题目:有一个二维数组,二维数组的每一行从左到右数据递增,二维数组的每一列,从上到下递增。在这样的二维数组中查找指定元素,返回其下标。
思路:首先将待查找的元素q与二维数组的右上方的元素e进行比较,如果e=q,则找到了指定元素,返回其坐标;若e>q,则元素e所在的列可以排除,因为该列元素都比q大;若e<q,则元素e所在的行可以排除,因为该行元素都比q小。
Java代码如下:
class Point{ int x; int y; } public class Solution { // 从二维数组中查找某个元素 public static Point findElement(int[][] datas, int element){ int row = 0; int col = datas[0].length-1; Point point = new Point(); while(row<datas.length && col>=0 ){ // 首先取右上角的元素,开始判断 int current = datas[row][col]; if(current == element){ point.x = row; point.y = col; return point; } else if(current > element){ // 如果右上角的元素比要查找的元素大,则删除右上角元素所在的列 col -= 1; } else{ // 如果右上角的元素比要查找的元素小,则删除右上角元素所在的行 row += 1; } } return point; } public static void main(String[] args) { int[][] nums = {{1,2,3,9,15}, {3,4,5,17,28}, {4,6,7,18,30}, {19,27,33,45,56}}; Point result = Solution.findElement(nums, 17); System.out.println(result.x); System.out.println(result.y); } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: java实现在二维数组中查找一个数
- 下一篇: 二维数组中查找指定数是否存在?