剑指offer(3)——二维数组中的查找

题目:

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

思路:

首先选取数组中右上角的数,然后让该数(num1)和待查找的数(num2)进行比较,如果num1比num2小,那么接下来只能向下继续查找,行数加1,如果num1比num2大,那么接下来应该将列数减1,继续查找,直到整个数组遍历完成

代码:

 public boolean findNum(int[][] arr,int num) {
         for(int i=0;i<arr.length;i++) {
             if(arr[0].length!=arr[i].length) {
                 System.out.println("数组列数不相同");
                 return false;
             }
         }
         int l=0;//二维数组行数
         int w=arr[l].length-1;//二维数组列数
         if(arr[l][w]==num) {
             //System.out.println("有相同的数字");
             return true;
         }else {
             while(arr[l][w]!=num) {
                 if(l>=arr.length-1||w<0) {
                     return false;
                 }
                 if(arr[l][w]<num) {
                     l++;
                 }else{
                     w--;
                 }
             }
             return true;
         }

     }
上一篇:Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)


下一篇:[java] 可视化日历的实现(基于Calendar类 )