題目描述:
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
題目分析:
根據二維數組的特點可知,二維數組相當於一個矩陣;
根據題意可知該數組是有序的,因此該矩陣元素相當於是從小到大排列的;
如果從左下角開始查找較方便,因為左下角的值向上是遞減的,向右是遞增的;
當從左下角開始比較時,如果target傳入的數大於它則列數加一進行比較 ,如果小於它則行數減一進行比較。
代碼:
public class Solution { public boolean Find(int target, int [][] array) { int rows = array.length; //定義行數 int lies = array[0].length; //定義列數 int i = 0; //i用於計數 while((rows>0)&&(iarray[rows-1][i]) //當目標大於左下角的值時,讓列數自增 { i++; } else if(target<array[rows-1][i]) //當目標小於左下角的值時,讓行數自減 { rows--; }else { //當前兩種都不是時,說明找到目標 return true; } } //遍歷完還沒找到,說明目標在數組中不存在 return false; } }
[qp18502452 ] Java二維數組查找功能代碼實現已經有250次圍觀