在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
示例:
現有矩陣 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
**如下
方法一思路:迴圈比較單個陣列的最大值和最小值 判斷是否在此範圍內
class solution
$arr_count=count($matrix)-1;
$max=$matrix[$arr_count][count($matrix[$arr_count])-1];//獲取陣列最大值
//print_r($max);die;
if($target>$max)
//第一種方法 沒有用上陣列是有序的這一關鍵點 4ms
for($i=0;$i}}
/*同一種方法的不同實現
foreach($matrix as $k=>$v)
}
} */
return false;//執行到這就說明沒有找到 否則找到就返回了}}
總結:使用的暴力方法 沒有用到題目中說好的排序
第二種方法
思路1.陣列是n*m且有序的 是乙個矩陣 則每一行的陣列元素個數是相同的
2.獲取每一行的最大值和需要確定的數字做比較 8ms
$row_numbers=count($matrix[0]);//獲取一行陣列有多少個元素
foreach($matrix as $k=>$v)
} }}
return false;
總結:其實這個題目主要考察的是二分查詢演算法 但是本人目前沒有吃透二分查詢演算法,吃透後再補充。
寫給自己的話:堅持總是沒有錯的 加油!!!
陣列 二維陣列
一組相同型別的資料組合,是一種引用型別。陣列名稱不是固定的,與其存放的資料的型別有關。如 存放int型別的資料,陣列名稱 int 存放字串資料,陣列名稱 string 存放scanner型別的資料,陣列名稱 scanner陣列中的每個資料,都是這個陣列的元素。1 宣告 元素型別 變數名 元素型別 變...
陣列 二維陣列
陣列,從名字很簡單看出就是數字組合,一堆數 一堆元素 在一起。然後看一下怎麼定義,怎麼初始化。陣列的動態初始化 初始化之後每個元素的儲存內容為其對應資料型別的預設值。資料型別 陣列名 new 陣列型別 大小 int arr new int 5 資料型別 陣列名 new 陣列型別 大小 int arr...
陣列 二維陣列
1 我們先要理解什麼是二維陣列?其實二維陣列就是將兩個或者兩個以上的陣列巢狀在一起就形成了二維陣列。接下我們先通過對二維陣列的定義語法來看看二維陣列的書寫方式。動態初始化 資料型別 陣列名稱 new 資料型別 行的個數 列的個數 靜態初始化 資料型別 陣列名稱 new 資料型別 通過一組簡單的 來看...