。。。剑指Offer之——二维数组中的查找。。。

本文介绍了一种在二维有序矩阵中查找特定元素的高效算法。通过从矩阵的右上角开始,根据目标值与当前元素的比较结果,决定是向下还是向左移动,从而避免了全矩阵遍历,大大提高了查找效率。
 1 public boolean Find(int target, int[][] array) {
 2         // 1、判断输入进来的数组array是否为空,array == null
 3         // 2、判断输入进来的数组array的内容是否为空,array.length == 0
 4         if (array == null || array.length == 0) {
 5             return false;
 6         }
 7         //获得数组的行数
 8         int rows = array.length;
 9         //获得数组的列数
10         int columns = array[0].length;
11 //        一开始,指向第一行的最后一列那个数,即最右上角的那个数
12         int r = 0, c = columns - 1;
13 //        r代表指向行的指针,c代表指向列的指针,不能越界
14         while (r < rows && c >= 0) {
15 //            如果数组中,目标值(target)= 右上角的数字,则返回true
16             if(target==array[r][c]){
17                 return true;
18 //            如果数组中,目标值(target)> 右上角的数字,
19 //            则说明应该往数组下面去寻找target
20             }else if(target>array[r][c]){
21                 r++;
22 //            如果数组中,目标值(target)< 右上角的数字,
23 //            则说明应该往数组左边去寻找target
24             }else{
25                 c--;
26             }
27         }
28 //        如果代码执行到这里,说明没有找到target
29 //        因为,如果要是找到了target,一定在上面的while循环体里return true
30 //        因此,找不到,则返回false
31         return false;
32     }

 

转载于:https://www.cnblogs.com/yingmeng/p/10767041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值