剑指offer【01】- 二维数组中的查找(Java)

在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有。

而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了。剑指offer应对面试中的手撕代码,leetcode主要应对线上笔试。本文的剑指offer题目是在牛客网做的,一共有66题,我是按默认的顺序往下做的。牛客网直达链接:https://www.nowcoder.com/activity/oj

题目:二维数组中的查找

考点:数组

描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 
解题思路:从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。于是,target比这个元素小就往上找,比这个元素大就往右找。如果出了边界,则说明二维数组中不存在target元素。
 
java版本
 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         //获取二维数组的行数
 4         int row = array.length;
 5         //获取二维数组的列数
 6         int col = array[0].length;
 7         int j = 0;
 8         while(row > 0 && j < col){
 9             //从数组的左下角开始判断
10             if(target > array[row-1][j]){
11                 //往右移
12                 j++;
13             }else if(target < array[row-1][j]){
14                 //往上移
15                 row--;
16             }else{
17                 return true;
18             }
19         }
20         return false;
21     }
22 }

刚开始不懂怎么下手,看了一下别人的解题思路,理解题目后还是能写出来了。

posted @ 2019-03-23 10:41  [浪子回头]  阅读(304)  评论(0编辑  收藏  举报