1. 程式人生 > >牛客網劍指offer—題目一在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數

牛客網劍指offer—題目一在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數

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

思路:因為是隻需判斷有無該整數,所以用bool函式,返回false或true

     假設是這樣一個數組,所以從選左下角或者右上角的數字為第一個進行判斷,以左下角6為第一個數進行判斷 為例,假設目標數為9,  9>6,因此在6所在行的右邊,然後9>8,繼續往右走,9<11,所以在11所在列,9=9,找到,返回true。

程式碼:

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) 
    {
        int m=array.size();
        int n=array[0].size();
        int row=m-1;
        int column=0;
      
        if(m==0&&n==0)
            return false;
    
            while(row>=0&&column<n)
            {
            if(target>array[row][column])
                    column++;
                else if (target<array[row][column])
                     row--;
                    
                 else 
                     return true;
            }
        
            return false;
          
        
    }
};