码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-11-15 00:15:56      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:return   总结   ati   public   顺序   整数   二维数组   题目   解决   

题目描述

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

思路:

①对于一般数组,普通遍历方式即可判断数组中是否含有该元素。对于二维数组,两层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                         

总结:

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

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

标签:return   总结   ati   public   顺序   整数   二维数组   题目   解决   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!