剑指offer 面试题04. 二维数组中的查找

Posted carrollcn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 面试题04. 二维数组中的查找相关的知识,希望对你有一定的参考价值。

题目描述

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

            技术图片

 

解法1:暴力暴力暴力:双层暴力     结果也能过

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        // 第一个:二维遍历查询
        if(matrix.length==0)
         return false;

        boolean res=false;
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[0].length;j++){
                if(matrix[i][j]==target){
                    res = true;
                    break;
                }
            }
            if(res==true){
                break;
            }
        }
        return res;
    }
}

解法2:解法1没有利用到每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序的特性。

  第一感觉:左上角到右下角,也感觉不出什么。 换成右上角到左下角,比当前值小,列-1,比当前值大,行+1.最后能找到target。如果数组越界还没有找到,那么数组中不存在target。

  若数组为空,返回 false

  初始化行下标为 0,列下标为二维数组的列数减 1 

  • 若数组为空,返回 false
  • 初始化行下标为 0,列下标为二维数组的列数减 1
  • 重复下列步骤,直到行下标或列下标超出边界
  1. 获得当前下标位置的元素 num
  2. 如果 num 和 target 相等,返回 true
  3. 如果 num 大于 target,列下标减 1
  4. 如果 num 小于 target,行下标加 1
  • 循环体执行完毕仍未找到元素等于 target ,说明不存在这样的元素,返回 false`
class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix == null || matrix.length == 0){
            return false;
        }
        int row=0,cloum=matrix[0].length-1;
        while(row<matrix.length && cloum>=0){
            if(target==matrix[row][cloum]){
                return true;
            }
           else if(target<matrix[row][cloum]){
                cloum--;
           }
           else row++;
        }
       return false;
    }
}

 

以上是关于剑指offer 面试题04. 二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer学习面试题:二维数组中的查找PHP实现

《剑指Offer》面试题3:二维数组中的查找

剑指offer面试题 4.二维数组中的查找

剑指Offer面试题九度OJ1384:二维数组中的查找

[剑指offer]面试题3:二维数组中的查找

剑指offer题解二维数组中的查找