wordpress 百度站长,大德通众包网站建设,wordpress flickr相册,精准营销英文文章目录 标题解题思路优化 标题
在一个 n * m 的二维数组中#xff0c;每一行都按照从左到右 非递减 的顺序排序#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数#xff0c;输入这样的一个二维数组和一个整数#xff0c;判断数组中是否含有该整… 文章目录 标题解题思路优化 标题
在一个 n * m 的二维数组中每一行都按照从左到右 非递减 的顺序排序每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数输入这样的一个二维数组和一个整数判断数组中是否含有该整数。
示例:
现有矩阵 matrix 如下
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]
给定 target 5返回 true。
给定 target 20返回 false。
限制
0 n 1000
0 m 1000
解题思路 观察矩阵特点发现可以在第一行中找到最后一个小于等于该数的位置在该列中查找同理找到第一列中最后一个小于等于该数的位置在该行查找、如果都不存在那么在小于x,y范围内查找。
public bool FindNumberIn2DArray(int[][] matrix, int target){if(matrix.GetLength(0) 0|| target null || matrix[0].GetLength(0) 0)return false;int x 0 , y 0;for(int i 0 ; i matrix[0].GetLength(0); i)//1维长度{if(matrix[0][i] target){x i;}}for(int i 0 ; i matrix.GetLength(0); i)//0维长度{if(matrix[i][x] target)return true;}for(int i 0 ; i matrix.GetLength(0); i)//0维长度{if(matrix[i][0] target){y i;}}for(int i 0 ; i matrix[0].GetLength(0); i)//1维长度{if(matrix[y][i] target)return true;}for(int i 0 ; i y; i)//在x,y内找{for(int j 0; j x ; j){if(matrix[i][j] target)return true;}}return false;}优化