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

2022-01-18 09:24:48 字數 1518 閱讀 5080

題目**於力扣(leetcode)

目錄三、**實現

四、執行用時

五、部分測試用例

1351. 統計有序矩陣中的負數

說明:

據題意:矩陣元素無論是按行還是按列,都以非遞增順序排列

遍歷矩陣,再每次遍歷乙個一維陣列

判斷當前一維陣列中的元素是否為負數

為負數時,即其後的元素也必定為負數,則該陣列中負數的個數為陣列長度 - 當前索引

結束當前一維陣列的遍歷

遍歷矩陣,每次遍歷乙個一維陣列

對一維陣列進行二分查詢的操作

如二分計算得到的中間索引,其在一維陣列上的元素大於等於 0 時,左指標等於中間索引加 1,繼續在縮小後的範圍中查詢第乙個負數出現索引位

中間索引上的元素為負數時,右指標等於中間索引減 1,繼續在縮小後的範圍中查詢第乙個負數出現索引位

迴圈結束後,最後的左指標索引位一定是指向第乙個負數的所在索引,則該陣列中的負數個數等於陣列長度 - 左指標所在索引

public static int countnegatives(int grid) }}

return ans;

}

public static int countnegatives(int grid)  else 

}// 最後 left 索引所在的位置即是第乙個負數所在的索引(其之後的元素也是負數)

// 陣列中負數個數 = 陣列長度 - left 索引

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 統計有序矩陣中的負數

力扣刷題 給你乙個 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...

leetcode 1351 統計有序矩陣中的負數

該題目可以分解為求一維陣列中比0小的數的個數,和 荷蘭國旗 類似。但是更加簡單,因為次數一維陣列是有序的。因為陣列是遞減排列,所以從後向前迴圈比較好 根據題目規則 從右上角開始搜尋 例如二維陣列 4 3 2 1 3 2 1 1 1 1 1 2 1 1 2 3 觀察可以得出規律如果乙個位置為負數,那麼...