首页 > 编程语言 > 详细

判断数组中是否含有该整数

时间:2018-11-14 23:44:54      阅读:129      评论:0      收藏:0      [点我收藏+]

题目描述

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

思路:

①对于一般数组,普通遍历方式即可判断数组中是否含有该元素。对于二维数组,两层for循环即可,时间复杂读为o(n*n);

②对于本题,二维数组行按升序排列,列也按升序排列,我们可以使用一点小技巧:从数组的左下角开始遍历数组,能更有效率的解决问题。

具体代码:

 1 public class test3 {
 2     public static void main(String[] args) {
 3         int[][] arr = {{11,22,33,44},{12,23,34,45},{13,24,35,46},{14,25,36,47}};
 4         System.out.println(Find(12,arr));
 5         
 6 }
 7     public static boolean Find(int target, int [][] array) {
 8         int hang=array.length;//获取行数
 9         int lie=array[0].length;//获取 
10         int i=hang-1;
11         int j=0;                //从左下角开始
12             while(target!=array[i][j]) {
13             if(target<array[i][j]) {//比目标元素大,则行号减1
14                 i--;
15             }
16             else if(target>array[i][j]) {//比目标元素小,则列号加1
17                 j++;
18             }
19             if(i<0||j>lie-1) {//当行或列超出数组范围则返回false,表示没找到,不然就在循环体里一直找
20                 return false;
21             }
22         }
23         return true;
24 
25 
26     }
27 }
28                         

总结:

知道对于这种特殊排列的数组选择哪种遍历方式最有效(左下角开始寻找)

判断数组中是否含有该整数

原文:https://www.cnblogs.com/zclun/p/9961100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!