在行列都排好序的矩陣中找數

2021-09-18 06:55:42 字數 1120 閱讀 8952

暴力的話時間複雜度到了o(n*m)

從資料狀況出發考慮還有一種解法

例:1 3 4 5

2 4 6 7

5 8 9 11

8 12 13 16

假如說是找6

我們從左下角開始走

一開始是8 比6大 那麼就不用考慮8的右面了 直接往上走

走到了5 5比6小 那麼5上面的都會比6小 向右走

走到了8 8比6大 那麼8的右面和下面都比6大 向上走

走到了4 4比6大 那麼4的上面都會比6小 向右走

找到了6 true

。。。。

一直到了越界還沒有找到 那麼返回false

這樣的話時間複雜度到了o(m+n)

public static boolean findnum(int arr, int num)  else if (arr[a][b] > num)  else 

} return false;

}

從右上角等等那幾個角落出發也是同理

public static boolean findnumnew(int arr, int num)  else if (arr[a][b] < num)  else 

} return false;

}

測試

在行列都排好序的矩陣中找數

題目 給定乙個有n m的整型矩陣matrix和乙個整數k,matrix的每一行和每一 列都是排好序的。實現乙個函式,判斷k 是否在matrix中。例如 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果k為7,返回true 如果k為6,返 回false。要求 時間複雜度為o n m...

在行列都排好序的矩陣中找數

題目描述 給定乙個有n m的整型矩陣matrix和乙個整數k,matrix的每一行和每一列都是排好序的。實現乙個函式,判斷k是否在matrix中。例如 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果k為7,返回true,如果k為6,返回false。要求時間複雜度為o n m 額...

在行列都排好序的矩陣中找數

題目 給定乙個有n m的整型矩陣matrix和乙個整數k,matrix的每一行和每一 列都是排好序的。實現乙個函式,判斷k是否matrix中。若資料如下 如果k為7,返回true 如果k為6,返回false。要求 時間複雜度為o n m 額外空間複雜度為o 1 思路 從右下方最大值的地方開始找,先橫...