剑指offer第三题:二维数组中查找

本文介绍了一个高效的二维数组查找算法,该算法能在有序的二维数组中快速定位目标数值。通过逐步迭代,从数组右上角开始比较,实现了O(n+m)的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package java_study.JianZhiOffer;

import java_study.sort.Sort7;
import org.junit.Test;

import java.util.Arrays;
import java.util.Random;
/**
 * Created by ethan on 2015/6/20.
 * 在二维数组种找一个数
 * 剑指offer第三题:二维数组种查找
 */
public class NO3FindIn2DimensionArray {
    public int[][] arr = {{2,5,9,19,21},{3, 6,11, 21, 25},{5, 8, 18, 28, 32},{8, 11, 31, 39, 49}};
    public boolean find(int[][] arr, int goal){
        if (arr == null) return false;
        int row = 0;
        int col = arr[0].length-1;
        while(row<arr.length && col>=0){
            if (arr[row][col] == goal) return true;
            if (arr[row][col] > goal) col--;
            else row++;
        }
        return false;
    }
//    public int[][] init(int row, int col){
//        int[][] arr = new int[row][col];
//        Random random = new Random();
//        for (int i=0; i<row; i++){
//            for (int j=0; j<col; j++){
//                arr[i][j] = random.nextInt(100);
//            }
//            Arrays.sort(arr[i]);
//        }
//        return arr;
//    }
    public void print_array(int[][] arr){
        for (int i=0; i<arr.length; i++){
            for (int j=0; j<arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
    @Test
    public void test(){
        System.out.println("find it");
        print_array(arr);
        System.out.println(find(arr, 25));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值