1. 程式人生 > >每日一題:查詢

每日一題:查詢

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

 

高階姿勢寫法:

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        int m,n,x,y;
        m = array.size();//行數
        n = array[0].size();//列數
         
        x=m-1;y=0;//座標定在左下角
        while(x>=0 && y<=n-1){
          if(target<array[x][y]){
                       x--;//遇小上移
                 }
          else if(target>array[x][y]){
                       y++;//遇大右移
                 }
          else {
               return true;
             }
      }
       return false;
    }
};

平庸的姿勢:沒有用到條件二維陣列是有序陣列

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        for(int i = 0;i < array.size();i++){
            for(int j = 0 ;j <array[0].size();j++){
                if(target == array[i][j]){
                    return true;
                }
            }
        }
        return false;
    }
};