zoukankan      html  css  js  c++  java
  • 剑指offer(一):二维数组中的查找

    题目:

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

             1   5   7   8   9 

       2   6   8   9  10

       3   7  10 11 13

       4   8  12 13 15

       5   9  13 14 16

            给定数字12,如上数组找出12是否存在该数组中

    解决方法:

      可以利用左下角或者右上角的优势,比如左下角数字5上面的数字都比他小右边的数字都比他大,右上角数字9下面的数字都比他大左边的数字都比他小。

    思路:

      如题要找的数字是12,此时我们使用右上角的优势,右上角数字9,小于12,所以这个时候就在他的下一行找,此时下一行是数字10,同理比12小,往下一行找,下一行数字是13,此时13>12,故此从13的左边找(13下面的肯定都比13大), 左边是11,此时11<12,故从11的下面找(11的左边肯定都比11小),下一行是数字13,此时13>12,故从13的左边找(下面的肯定比13大),13的左边是12,此时找到了12直接返回true即可。若是没有找到则返回false

    代码:

     1 public class Solution {
     2     public boolean Find(int target, int [][] array) {
     3         int row = 0;
     4         int col = array[0].length-1;
     5         while(row < array.length && col >=0){
     6             if(array[row][col] > target){
     7                 col--;
     8             }else if(array[row][col] < target){
     9                 row++;
    10             }else{
    11                 return true;
    12             }
    13         }
    14         return false;
    15     }
    16 }

     

  • 相关阅读:
    webpack
    Js数组和字符串常用方法
    Vue.js 2.0 快速上手
    雅虎前端优化的35条军规
    前端问题大杂烩
    Java和js的区别,以及Java和c的区别
    前后端联调
    99%的人都理解错了HTTP中GET与POST的区别
    vue项目目录
    vuex入门
  • 原文地址:https://www.cnblogs.com/rgever/p/9639176.html
Copyright © 2011-2022 走看看