zoukankan      html  css  js  c++  java
  • <剑指offer> 第1题

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

    基础做法:

    逐个遍历数组元素,直到找到元素为止

    public class Solution {
          public boolean Find(int target, int [][] array) {
            for(int i = 0; i < array.length; i ++){
                for(int n = 0; n < array[i].length; n++){
                    if(array[i][n] == target) 
                        return true;
                }
            }
            return false;
        }
    }

    进阶做法:

    首先选取数组中右上角的数字。如果该数字是要查找的数字,查找过程结束。

    如果该数字大于要查找的数字,剔除数字所在列;如果该数字小于要查找的数字,剔除这个数字所在的行,一步步缩小查找的范围,直到找到要查找的数字,或者查找范围为空。

    public class Solution {
         public boolean Find(int target, int [][] array) {
            int row = 0; //起始的行数
            int col = array[0].length - 1; //起始的列数
            
            while((row < array.length) && (col >= 0)){
                if(target == array[row][col]){ //如果找到了直接退出,返回true
                    return true;
                }else if(target < array[row][col]){ //如果找到的数比target大,那么target应该在左边
                    col --;
                }else{//如果找到的数比target小,那么target应该在数的下边
                    row ++; 
                }
            }
            return false;
        }
    }
  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/HarSong13/p/11000544.html
Copyright © 2011-2022 走看看