标签:遍历 bsp bool 结果 剑指offer 超出 ima 数组越界 public
题目描述
在一个 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
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; } }
标签:遍历 bsp bool 结果 剑指offer 超出 ima 数组越界 public
原文地址:https://www.cnblogs.com/carrollCN/p/13090197.html