剑指Offer1 - 二维数组中的查找
2020-06-02 06:17
162 查看
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路
从题意我们可以知道最小数是第一行第一个,最大数是最后一行的最后一个,每一行最大的一个数是每一行的最后一个,每一行最小一个数是每一行的第一个。
所以我们从第一行的最后一个数开始比较假定这个值为 temp,如果目标值 target 大于 temp,那么与下一行的数值进行比较,因为下一行的值比上一行的值大;如果目标值 target 小于 temp,那么与前一列的数值进行比较,因为前一列的值比后一列的值小。如此循环直到找到这个数返回 true,或者所有的数都被查找过返回 false。
代码实现
import java.util.Scanner; public class Problem1 { public static boolean Find(int target, int [][] array) { if(array == null){ return false; } int n = array.length; int m = array[0].length; int i = 0; int j = m - 1; while(i < n && j >= 0){ int temp = array[i][j]; if(target < temp){ j--; } else if(target > temp){ i++; } else{ return true; } } return false; } public static void main(String[] args) { Scanner cin = new Scanner(System.in); int[][] array = new int[2][2]; for (int i = 0; i < 2; i ++) { for (int j = 0; j < 2; j ++) { array[i][j] = cin.nextInt(); } } int target = cin.nextInt(); System.out.println(Find(target, array)); } }
相关文章推荐
- 剑指Offer-04:二维数组中的查找
- 剑指Offer-二维数组中的查找-Python
- 剑指Offer_3_二维数组中的查找
- 剑指offer——在二维数组中查找元素
- 剑指offer--(1) 二维数组中的查找
- 剑指offer:二维数组中的查找(数组)
- 剑指offer1 二维数组中的查找
- 剑指offer 二维数组查找
- 剑指offer-->二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指offer面试题3 二维数组的查找(java实现)
- 剑指offer--二维数组中的查找 java实现
- 剑指offer- 二维数组中查找
- 剑指offer-题3:二维数组中的查找
- 剑指offer - 面试题3:二维数组中的查找
- 剑指offer:3-二维数组中的查找
- 剑指Offer——(1)二维数组中的查找
- 【剑指offer】二维数组中的查找
- 剑指Offer之二维数组中的查找
- 10分钟一题剑指OFFER-二维数组中的查找