資料結構與演算法《四》

2022-08-22 08:54:16 字數 906 閱讀 1087

一切推理都必須從觀察與實驗得來。 —— 伽利略·伽利雷

編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性:

示例:

現有矩陣 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]

]

給定 target = 5,返回 true。

給定 target = 20,返回 false。

解法一:

因為矩陣每一行都是公升序排列,所以可以使用二分查詢,對每行做二分查詢。

code:

class solution  else if (matrix[i][mid] < target)  else }}

return false;

}}

解法二:

既然每行的元素從左到右公升序排列,每列的元素從上到下公升序排列。則左下角的元素為最小值,以此元素為基準,小於目標值,則向右移動,大於目標值,則向上移動。

code:

class solution  else if (matrix[row][col] > target)  else 

}return false;

}}

資料結構與演算法四

資料結構是資料儲存的方式,演算法則是處理資料的方法,通常我們通過分析演算法的時間複雜度和空間複雜度來判斷它的好壞。通常我們學資料結構的同時也會學習演算法,資料結構的不同就會導致演算法的不同,資料結構的選擇對演算法效率會產生重大的影響,所以資料結構與演算法緊密聯絡。乙個問題可能會有多種演算法,我們當然...

資料結構與演算法(四)

結構體 1 為什麼出現結構體 為了表達一些複雜的資料,而普通的基本資料型別變數無法表示 2 什麼是結構體 結構體是使用者根據自己的需求定義的一種新的資料型別 3 如何使用結構體 兩種方式 struct student int main void printf d s d n st.number,st...

資料結構與演算法 基礎(四)

1.二分查詢 1.前提 該陣列是乙個有序陣列 2.思路 要考慮陣列中存在多個相同值的情況,以公升序陣列為例 向右收集相同值 temp mid 1 while temp right findval arr temp return list 2.插值查詢 1.前提 陣列是有序陣列 2.思路 同樣要考慮陣...