(java)二维数组中的查找

分析:此题目我们可以从右上角或者左下角进行比较。我们以右上角为例,每次拿右上角的元素与目标元素进行比较,分为三种情况,(1)右上角元素大于目标值,则目标元素在当前二维数组的下方;(2)右上角元素小于目标值,则目标元素在当前二维数组的左方;(3)等于则说明找到目标元素;

代码实现如下:

package com.example.offer;
public class FindNumTest {

    public static void main(String[] args) {
        int[][] array={ {1,2,8,9},
                        {2,4,9,12},
                        {4,7,10,13},
                        {6,8,11,15}};
        int [][] arr={{},{}};
        int num=7;
        boolean flag=findNum( arr,num);
        if(flag){
            System.out.println("矩阵中含有指定数字!");
        }else{
            System.out.println("矩阵中不含有指定数字!");
        }
    }

    /**
     * 在二维数组中查找指定的数字,有两种查找方式,一是左下角开始查找,二是从右上角开始查找
     * 此方法我们从右上角开始查找
     * @param array
     * @param num
     * @return
     */
    private static boolean findNum(int[][] array, int num) {
        if(array!=null && array.length>0){ //避免空指针
            int row=0;
            int columns=array[0].length-1;
            //每次都取右上角的元素与目标元素进行比较
            while(row<array.length && columns>0){
                if(num>array[row][columns]){
                    row++;
                }else if(num<array[row][columns]){
                    columns--;
                }else{
                    System.out.println("行:"+(row+1)+",列:"+(columns+1));
                    return true;
                }
            }
            return false;
        }
        return false;
    }
}

注:我们不能从左上角与右下角元素开始比较,因为我们无法缩小二维数组。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值