(一)
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:每一行单调递增、每一列也是单调递增,每一行的最右边为最大值。让目标值和每一行的最大值去比较,如果目标值大于这一行的最大值,则到下一行再去比较,如果小于这一行最大值则到这一行的前一列去比较。找不到的话为false。
1 public class Solution { 2 public boolean Find(int target, int [][] array) { 3 boolean found = false;//开始found设置为false 4 int lie = array[0].length;//获取数组列数 5 int hang = array.length;//获取数组行数 6 int column = lie - 1; 7 int row = 0; 8 while(row<hang && column>=0){ //在所有条件都没有找到后跳出循环 9 int value = array[row][column]; 10 if(target>value){ 11 row++; 12 }else if(value>target){ 13 column--; 14 }else{ 15 found = true;//找到了才为true,跳出循环 16 break; 17 } 18 } 19 return found; 20 } 21 }

浙公网安备 33010602011771号