在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序,請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數,
方法一:由于每行都是從左到右遞增,每列都是從上到下遞增可得:
左下角的數m,是該行的最小值,該列的最大值,從左下角開始遍歷
若 target>m,右移一位,遍歷整行
若target<m,上移一位,從上行開始遍歷
若target=m,return true
function Find(target, array) { let rows = array.length; let cols = array[0].length; if(rows == 0||cols==0){ return false; } // 左下 let row = rows-1; let col = 0; while(row>=0 && col<cols){ if(target>array[row][col]){ col++; }else if(target<array[row][col]){ row--; }else{ return true; } } return false; }
方法二:從右上方開始遍歷,右上方數字n為該行最大值,該列最小值
若targe>n,下移一位,從下行開始遍歷
若target<n,左移一位,遍歷整行
若target=n,return true
function Find(target, array) { let rows = array.length; let cols = array[0].length; if(rows == 0||cols==0){ return false; } // 右上 let row = 0; let col = cols-1; while(row<rows && col>=0){ if(target>array[row][col]){ row++ }else if(target<array[row][col]){ col-- }else{ return true; } } return false; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2141.html
標籤:其他
上一篇:shell編程中星號(asterisk "*")的坑
下一篇:字串---替換空格
