Java實現二維數組中的查找

題目描述:數組

        在一個二維數組中(每一個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。函數


題目分析:spa

  1. 根據二維數組的特色可知,二維數組至關於一個矩陣;
  2. 根據題意可知該數組是有序的,所以該矩陣元素至關因而從小到大排列的;
  3. 若是從左下角開始查找較方便,由於左下角的值向上是遞減的,向右是遞增的;
  4. 當從左下角開始比較時,若是target傳入的數大於它則列數加一進行比較 ,若是小於它則行數減一進行比較。

 


代碼:code

 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         int rows = array.length;
 4         //定義行數
 5         int lies = array[0].length;
 6         //定義列數
 7         int i = 0;
 8         //i用於計數
 9         while((rows>0)&&(i<lies))
10             //while中不知足條件時即中止循環
11         {
12             if(target>array[rows-1][i])
13                //當目標大於左下角的值時,讓列數自增
14                {
15                    i++;
16                }
17                else if(target<array[rows-1][i])
18                //當目標小於左下角的值時,讓行數自減
19                {
20                    rows--;
21                }else
22                {
23                    //當前兩種都不是時,說明找到目標
24                    return true;
25                }
26         }
27                //遍歷完還沒找到,說明目標在數組中不存在
28                return false;
29     }
30 }
相關文章
相關標籤/搜索