剑指offer--二维数组中查找

浅浅的花香味﹌ 2023-07-03 07:28 141阅读 0赞

剑指offer–二维数组中查找

题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,

每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一

个整数,判断数组中是否含有该整数。

  1. public class Solution {
  2. public boolean Find(int target, int [][] array) {
  3. }
  4. }

解题思路

({1,3,5,12,14},

{2,4,7,13,16},

{3,6,9,15,19},

{6,8,10,19,21})

因为数组每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

所以可以把右上角的数看作其所在行和所在列组成的递增数组的中位数({1,3,5,12,14(右上角的数),16,19,21},

然后把当目标值与右上角的 值进行比较,若目标值大于右上角的数,那么就把行值增加 (i++;相当于查询递增数组的右边的值。); 若目标值小于右上角的数就减小列值(length–;相当于索引中位数的左值);如果相等在返回true,否则返回false;

解题代码

  1. public static boolean Find(int target, int [][] array) {
  2. int length = array[0].length - 1;//记录数组的列值
  3. int i=0;//记录数组的行数
  4. while(length >= 0 && (i < array.length)){
  5. if (array[i][length] == target)
  6. return true;
  7. else if (array[i][length] > target) length--;
  8. else if(array[i][length] < target) i++;
  9. }
  10. return false;
  11. }

发表评论

表情:
评论列表 (有 0 条评论,141人围观)

还没有评论,来说两句吧...

相关阅读

    相关 offer数组查找

    描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和

    相关 offer数组查找

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

    相关 offer01-数组查找

    闲来无事,刷一刷题,思路是从左下到右上进行查找,因为首先数组是有序的,所以左下到右上这条线的数据的特征是:当前行中最小的,同时又是当前列中最大的,所以可以用这条线上的值进行比较

    相关 offer数组查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个

    相关 offer数组查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整