【獨家】楊氏矩陣

2023-01-14 19:15:34 來源:51CTO博客


(資料圖片僅供參考)

問題:有一個數字矩陣,矩陣的每行從左到右是遞增的,矩陣從上到下是遞增的,請編寫程序在這樣的矩陣中查找某個數字是否存在。要求:時間復雜度小于O(N);

楊氏矩陣普及:楊氏矩陣是對組合表示理論和舒伯特演算很有用的工具。它提供了一種很方便的方式來描述對稱和一般線性群表示,并研究它們的性質。

分析:對于楊氏矩陣老說,右上角和左下角的元素是有特點的。右上角的元素是一行中最大的,一列中最小的。左下角的元素是一行中最小的,是一列中最大的。所以我們可以從右上角或者左下角開始查找。比如(線性搜索方法):從右上角開始查找的時候,右上角的元素比我們要查找元素小,我們就可以去掉右上角元素所在的這一行;右上角的元素比我們要查找的元素大,我們就可以去掉右上角元素所在的這一列。然后依然找右上角的元素繼續和要查找的元素與比較。這樣每一次比較去掉一行或者去掉一列。這個查找效率是高于遍歷數組元素的,所以時間復雜度是小于O(N),也滿足題目要求。

代碼:

代碼:

標簽: 時間復雜度 一般線性群 數組元素

上一篇:環球快報:50-Docker-分布式倉庫Harbor高可用
下一篇:【速看料】Linux下圖片處理