二维数组,每行、列升序排列,判断某整数是否在数组中
原题如下
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。附图片如下
解题思路
1.数组特点
二维数组;
数组为 行,列元素均为有序且递增的;
因为行列都是递增的,所以对于数组中元素来讲,有几个特定位置的元素可以利用,每行的首尾元素即[i][0],[i][length-1]
2.拆分,减少循环
要在数组中找到某个元素,离不开遍历,迎面的二维数组给我们的感觉是可能要遍历两层,依次加入数组的每一维,比较每一维的每个元素,循环 m*n 次。
拆分二维数组,无非就两层,加条件来限制循环的进入。这里,数组中特点位置元素就可以用了:若 整数大于当前行首元素且小于当前行尾元素,进循环。
3.准备代码
public class T2 {
public static void main(String[] args){
int[][] numbers = {
{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,14,15}};