二维数组,每行、列升序排列,判断某整数是否在数组中

博客介绍了如何在一个二维数组中,每一行和每一列都按升序排列的情况下,高效地判断某整数是否存在于数组中。通过分析数组特点,如行首尾元素的有序性,可以减少循环次数,提高查找效率。
摘要由CSDN通过智能技术生成

二维数组,每行、列升序排列,判断某整数是否在数组中

原题如下

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

解题思路

1.数组特点

二维数组;
数组为 行,列元素均为有序且递增的;
因为行列都是递增的,所以对于数组中元素来讲,有几个特定位置的元素可以利用,每行的首尾元素即[i][0],[i][length-1]

2.拆分,减少循环

要在数组中找到某个元素,离不开遍历,迎面的二维数组给我们的感觉是可能要遍历两层,依次加入数组的每一维,比较每一维的每个元素,循环 m*n 次。

拆分二维数组,无非就两层,加条件来限制循环的进入。这里,数组中特点位置元素就可以用了:若 整数大于当前行首元素且小于当前行尾元素,进循环。

3.准备代码
public class T2 {

   public static void main(String[] args){
   	int[][] numbers = {
  {1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,14,15}};
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值