1351 統計有序矩陣中的負數(暴力 二分查詢)

2021-10-06 19:19:50 字數 994 閱讀 2525

1. 問題描述:

給你乙個 m * n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。 

請你統計並返回 grid 中 負數 的數目。

示例 1:

輸入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]

輸出:8

解釋:矩陣中共有 8 個負數。

示例 2:

輸入:grid = [[3,2],[1,0]]

輸出:0

示例 3:

輸入:grid = [[1,-1],[-1,-1]]

輸出:3

示例 4:

輸入:grid = [[-1]]

輸出:1

m == grid.length

n == grid[i].length

1 <= m, n <= 100

-100 <= grid[i][j] <= 100

2. 思路分析:

最容易想到的是暴力破解,我們只需要檢查陣列中的每乙個元素是否小於0進行計數即可,這個也是最容易實現的,第二個方法是二分查詢,因為題目中規定了每一行與每一列都是非遞增的序列,所以我們使用有序性的特點使用二叉查詢的方法找到每一行中的第乙個負數,然後計算出每一行中的負數的數目進行累加即可

3. **如下:

暴力破解:

class solution 

}return res;

}}

二分查詢:

class solution else l = mid + 1;

}if (pos != -1) res += grid[0].length - pos;

}return res;

}}

1351 統計有序矩陣中的負數

兩個小剪枝 二分要找到每行第乙個 0的數 int left 0 int right col 1 while left right if mid 1 grid i mid 1 0 else return cot 看題解受啟發,可以每次二分的時候,右邊界可以參考上一行的mid。如下面.第一行的 5 mi...

1351 統計有序矩陣中的負數 簡單

題目 於力扣 leetcode 目錄三 實現 四 執行用時 五 部分測試用例 1351.統計有序矩陣中的負數 說明 據題意 矩陣元素無論是按行還是按列,都以非遞增順序排列。遍歷矩陣,再每次遍歷乙個一維陣列 判斷當前一維陣列中的元素是否為負數 為負數時,即其後的元素也必定為負數,則該陣列中負數的個數為...

簡單題 1351 統計有序矩陣中的負數

力扣刷題 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...