楊氏矩陣,是對組合表示理論和舒伯特演算很有用的工具。它提供了一種方便的方式來描述對稱和一般線性群的群表示,並研究它們的性質。有乙個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢乙個數字是否存在。 時間複雜度小於o(n);
思路方法:
(1)了解什麼是楊氏矩陣之後我們就可以將它轉化為乙個二維陣列,陣列的每行從左到右是遞增的,每列從上到下是遞增的.
(2)在這樣的陣列中查詢乙個數字是否存在。
(3)先和矩陣左下角的元素進行比較,如果要查詢的元素num較小,則向右移動和右面的元素進行比較;如果要查詢的元素num較大,則向上移動,和上邊一行的元素進行比較。往復迴圈,最差的情況是從左下角一直比到右下角。其時間複雜度為o(m + n)
要注意從右上角出發。如果當前的數等於它,找到,返回true。
如果當前的數< 它, 往下走
如果當前的數 >它,往左走。
最後記得一定要return false
#define _crt_secure_no_warnings
#include#include#define m 5
#define n 6
int find(int arr[m][n], int num)
if (arr[j][k] > num)
}} return 0;
}int main()
,,,, };
int num;
printf("請輸入需要判斷的數:");
在楊氏矩陣中判斷乙個數是否存在
楊氏矩陣是乙個二位陣列,這個陣列無論橫向縱向都是遞增的。比如陣列 1 4 7 2 5 8 3 6 9 要想時間複雜度小於o n 就不能遍歷整個陣列,其實只需判斷這個i行j列的陣列的arr i 1 j 1 是否等於要找的數,如果大於要找的數,說明要找的數一定在該數的左下方。如果小於要找的數,說明要找的...
C語言 在楊氏矩陣中查詢乙個數字是否存在
題目 有乙個二維陣列 楊氏矩陣 陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 此題的解決思路為 由於陣列的每行從左到右是遞增的,每列從上到下是遞增的,因此右上角的這個數為該數所在這一行最大的數,為該數所在這一列最小的數,我們以陣列右上角的...
楊氏矩陣中查詢乙個數,如何去做?
我首先把你們當成面試官,來解決這道題。1.如果不知道楊氏矩陣,先和面試官溝通一下,一定要問清楚。楊氏矩陣 有乙個二維陣列.陣列的每行從左到右是遞增的,每列從上到下是遞增的.在這樣的陣列中查詢乙個數字是否存在。時間複雜度小於o n 這是必須考慮到的 2.不著急寫 先把思路屢清楚,陣列 1 2 3 1 ...