笔试练习2 二维数组中的查找

题目

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解答

提示:利用边界来减少重叠
注意:提高程序鲁棒性
从左下找:

public class Solution {
    public boolean Find(int target, int [][] array) {
        boolean result = false;
        if ((array.length!=0)&&(array[0].length!=0)){
            int rowsLength = array.length;
            int columnsLength = array[0].length;
            int rows = rowsLength - 1;
                int columns  = 0;
                while ((rows >= 0)&&(columns<columnsLength)){
                    if (array[rows][columns]<target){
                        columns++;
                    }else if (array[rows][columns]>target){
                        rows--;
                    }else {
                        result = true;
                        break;
                    }
                }
        }
        return result;
    }
}

相关知识点——数组

数组的特点

  1. 访问时间效率高
  2. 如需拓展,使用array list

数组的操作

创建数组

操作描述
声明int[] aorint a[]
初始化int[] a = new int [size],size为常数或变量,创建后不能改变大小。初始值:数字数组为0,boolean数组为false,对象数组为null
赋初始值int[] a = {1, 2, 3}
匿名数组new int[0],长度为0的数组(返回用);new int[] {1, 2, 3},用不创建新变量的方法重新初始化一个数组

基础操作

操作描述
长度a.length
访问1、下标,a[1];2、增强for循环,遍历全部,for (variable : collection) statement(不能用来赋值)
打印1、for循环;2、Array.toString(arrayName)(输出为:[1,2,3])
拷贝a.copyOf(b)
设置为相同元素fill
排序sort
二分查找binarySearch(type[] a, type v)

参考资料:
《剑指Offer》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值