剑指offer(第二版)面试题4:二维数组中的查找(Java)

it2022-05-05  132

题目:

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

(1)首先选取数组中右上角的数字:如果该数字等于要查找的数字,查找过程结束;

(2)如果该数字大于要查找的数字,则剔除这个数字所在的列;

(3)如果该数字小于要查找的数字,则剔除这个数字所在的行。

即:如果要查找的数字不在数组的有上角,则每次都在数组的查找范围剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围

代码如下:

import java.util.Scanner; public class test { public static void main(String[] args) { int[][] a = {{1,2,8,9},{2,4,14,12},{4,7,10,13},{6,8,11,15}}; Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.print(find(a,n)); } public static boolean find(int[][] a,int target) { if(a.length>0&&a[0].length>0&&a!=null) { int row = 0; int cloum = a[0].length-1; while(row<=a.length-1&&cloum>=0) { if(a[row][cloum]==target) { return true; } if(a[row][cloum]>target) { cloum--; } if(a[row][cloum]<target) { row++; } } return false; } return false; } }

 


最新回复(0)