二维数组的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思考: 2020/8/26 (思维的极限了)
判断数组中是否含有某个数,显然,可以遍历整个数组进行查找。 但是,这样时间复杂度太高。
于是,需要分析数据结构,算法就是建立在数据结构之上的。
对于每一个⚪,左边的元素都小于它,下边的元素都大于它。
但是我们无法知道⚪之间谁大谁小,也就无法定位到目标元素的位置!!!! 比如这里有两个⚪,如果目标元素大于这两个⚪的值,那么我们是无法知道目标元素可能存在于哪一个列中的。
-----
如果按照上面的想法,那么是永远都不会想明白的。 因为一开始就想错了!!! 根本就没有两个⚪,一直都是在移动一个⚪
代码: ( 二维数组中的二分查找 )
public class Solution { public boolean Find(int target, int [][] array) { int m=array.length-1; int j=array[0].length-1; int i=0; while(i<=m && j>=0){ if(target==array[i][j]) return true; else if(target<array[i][j]){ j--; }else{ i++; } } return false; } }
也许会有遗憾,但是不应该在失败之前
浙公网安备 33010602011771号