Java C++ 算法題解leetcode1582二進(jìn)制矩陣特殊位置
題目要求


思路:模擬
- 直接按題意模擬,先算出每行每列中“111”的個(gè)數(shù),然后判斷統(tǒng)計(jì)行列值均為111的位置即可。
Java
class Solution {
public int numSpecial(int[][] mat) {
int n = mat.length, m = mat[0].length;
int res = 0;
int[] row = new int[n], col = new int[m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
row[i] += mat[i][j];
col[j] += mat[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (mat[i][j] == 1 && row[i] == 1 && col[j] == 1)
res++;
}
}
return res;
}
}
- 時(shí)間復(fù)雜度:O(m×n)
- 空間復(fù)雜度:O(m+n)
C++
class Solution {
public:
int numSpecial(vector<vector<int>>& mat) {
int n = mat.size(), m = mat[0].size();
int res = 0;
vector<int> row(n), col(m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
row[i] += mat[i][j];
col[j] += mat[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (mat[i][j] == 1 && row[i] == 1 && col[j] == 1)
res++;
}
}
return res;
}
};
- 時(shí)間復(fù)雜度:O(m×n)
- 空間復(fù)雜度:O(m+n)
Rust
- 這里的迭代函數(shù)用得不是很熟練,參考了好多才勉強(qiáng)理解下來(lái)。
impl Solution {
pub fn num_special(mat: Vec<Vec<i32>>) -> i32 {
let row = mat.iter().map(|row| row.iter().sum::<i32>()).collect::<Vec<_>>();
let col = (0..mat[0].len()).map(|i| mat.iter().map(|col| col[i]).sum::<i32>()).collect::<Vec<_>>();
(0..mat.len()).fold(0, |res, i| res + (0..mat[i].len()).filter(|&j| mat[i][j] == 1 && row[i] == 1 &&col[j] == 1).count() as i32)
}
}
- 時(shí)間復(fù)雜度:O(m×n)
- 空間復(fù)雜度:O(m+n)
以上就是Java C++ 算法題解leetcode1582二進(jìn)制矩陣特殊位置的詳細(xì)內(nèi)容,更多關(guān)于Java C++ 二進(jìn)制矩陣特殊位置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C C++算法題解LeetCode1408數(shù)組中的字符串匹配
- Java?C++算法題解leetcode801使序列遞增的最小交換次數(shù)
- Java?C++題解leetcode字符串輪轉(zhuǎn)KMP算法詳解
- Java C++算法題解leetcode1592重新排列單詞間的空格
- Java?C++?算法題解leetcode145商品折扣后最終價(jià)格單調(diào)棧
- Java C++ 算法leetcode828統(tǒng)計(jì)子串中唯一字符乘法原理
- Java?C++?算法題解leetcode669修剪二叉搜索樹(shù)示例
- c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素
相關(guān)文章
C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體
大家好,本篇文章主要講的是C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
關(guān)于C++靜態(tài)成員函數(shù)訪問(wèn)非靜態(tài)成員變量的問(wèn)題
靜態(tài)成員函數(shù)不能訪問(wèn)非靜態(tài)成員,這是因?yàn)殪o態(tài)函數(shù)屬于類而不是屬于整個(gè)對(duì)象,靜態(tài)函數(shù)中的 member可能都沒(méi)有分配內(nèi)存。靜態(tài)成員函數(shù)沒(méi)有隱含的this自變量。所以,它就無(wú)法訪問(wèn)自己類的非靜態(tài)成員2013-10-10
計(jì)時(shí)器的time_t和clock_t 的兩種實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)?lái)一篇計(jì)時(shí)器的time_t和clock_t 的兩種實(shí)現(xiàn)方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
C語(yǔ)言進(jìn)階練習(xí)二叉樹(shù)的遞歸遍歷
樹(shù)是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹(shù)中稱為結(jié)點(diǎn))按分支關(guān)系組織起來(lái)的結(jié)構(gòu),很象自然界中的樹(shù)那樣。樹(shù)結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會(huì)的族譜和各種社會(huì)組織機(jī)構(gòu)都可用樹(shù)形象表示,本篇介紹二叉樹(shù)的遞歸與非遞歸遍歷的方法2022-06-06
華為機(jī)試題之統(tǒng)計(jì)單詞個(gè)數(shù)實(shí)例代碼
這篇文章主要介紹了華為機(jī)試題之統(tǒng)計(jì)單詞個(gè)數(shù)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
C++ 析構(gòu)函數(shù)與變量的生存周期實(shí)例詳解
這篇文章主要介紹了C++ 析構(gòu)函數(shù)與變量的生存周期實(shí)例詳解的相關(guān)資料2017-06-06
Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的圖文教程
很久沒(méi)有寫(xiě)C語(yǔ)言了,今天抽空學(xué)習(xí)下C語(yǔ)言知識(shí),接下來(lái)通過(guò)本文給大家介紹Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的詳細(xì)步驟,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-11-11
C語(yǔ)言全方位講解指針與地址和數(shù)組函數(shù)堆空間的關(guān)系
指針是C語(yǔ)言中一個(gè)非常重要的概念,也是C語(yǔ)言的特色之一。使用指針可以對(duì)復(fù)雜數(shù)據(jù)進(jìn)行處理,能對(duì)計(jì)算機(jī)的內(nèi)存分配進(jìn)行控制,在函數(shù)調(diào)用中使用指針還可以返回多個(gè)值2022-04-04
C++詳細(xì)實(shí)現(xiàn)紅黑樹(shù)流程詳解
今天我要跟大家介紹二叉搜索樹(shù)中的另一顆樹(shù)——紅黑樹(shù),它主要是通過(guò)控制顏色來(lái)控制自身的平衡,但它的平衡沒(méi)有AVL樹(shù)的平衡那么嚴(yán)格2022-06-06

