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

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

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

思路:首先從第0行的最後一列開始遍歷,先判斷迴圈條件,行數要小於總的行數,列數要大於等於0,然後把第零行最後一列的元素和目標元素進行比較,如果相等,表示已經找到,則返回,如果該元素大於目標元素,則列數減1,如果小於目標元素,則行數加1,再迴圈進行遍歷。