題中給出乙個n
行n
列的二維矩陣(n_rows,n_cols)
,且所有值被初始化為 0。要求編寫乙個flip
函式,均勻隨機的將矩陣中的 0 變為 1,並返回該值的位置下標[row_id,col_id]
;同樣編寫乙個reset
函式,將所有的值都重新置為 0。盡量最少呼叫隨機函式 math.random(),並且優化時間和空間複雜度。
注意:1.1 <= n_rows, n_cols <= 10000
2. 0 <= row.id < n_rows 並且 0 <= col.id < n_cols
3.當矩陣中沒有值為 0 時,不可以呼叫 flip 函式
4.呼叫 flip 和 reset 函式的次數加起來不會超過 1000 次
示例 1:
輸入:
["solution","flip","flip","flip","flip"]
[[2,3],,,,]
輸出: [null,[0,1],[1,2],[1,0],[1,1]]
示例 2:
輸入:
["solution","flip","flip","reset","flip"]
[[1,2],,,,]
輸出: [null,[0,0],[0,1],null,[0,0]]
輸入語法解釋:
輸入包含兩個列表:被呼叫的子程式和他們的引數。solution
的建構函式有兩個引數,分別為n_rows
和n_cols
。flip
和reset
沒有引數,引數總會以列表形式給出,哪怕該列表為空
LeetCode519 隨機翻轉矩陣
因為n rows和n cols最大能到104,所以不能開二維陣列,因為那樣空間複雜度回到108。題目說了呼叫flip和reset的次數加起來不會超過1000次,所以矩陣是比較稀疏的,我們只需要記錄所有1的位置即可。我們可以用乙個雜湊表記錄所有1的位置。為了方便,我們把二維的位置對映到乙個int變數,...
LeetCode 隨機翻轉矩陣
題中給出乙個 n 行 n 列的二維矩陣 n rows,n cols 且所有值被初始化為 0。要求編寫乙個 flip 函式,均勻隨機的將矩陣中的 0 變為 1,並返回該值的位置下標 row id,col id 同樣編寫乙個 reset 函式,將所有的值都重新置為 0。盡量最少呼叫隨機函式 math.r...
翻轉矩陣後的得分
問題描述 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 翻轉是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的翻轉後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0,0,...