leetcode 1277. 統計全為 1 的正方形子矩陣 中等

給你一個?m * n?的矩陣,矩陣中的元素不是?0?就是?1,請你統計并返回其中完全由?1?組成的?正方形?子矩陣的個數。

示例 1:

輸入:matrix =
[[0,1,1,1],[1,1,1,1],[0,1,1,1]
]
輸出:15
解釋: 
邊長為 1 的正方形有 10 個。
邊長為 2 的正方形有 4 個。
邊長為 3 的正方形有 1 個。
正方形的總數 = 10 + 4 + 1 = 15.

示例 2:

輸入:matrix = 
[[1,0,1],[1,1,0],[1,1,0]
]
輸出:7
解釋:
邊長為 1 的正方形有 6 個。 
邊長為 2 的正方形有 1 個。
正方形的總數 = 6 + 1 = 7.

提示:

  • 1 <= arr.length?<= 300
  • 1 <= arr[0].length?<= 300
  • 0 <= arr[i][j] <= 1

分析:由于 arr 的長和寬都不超過 300,可以用枚舉的方法來做。遍歷 arr,當當前值為 1 時,把這個位置作為矩陣的左上角,檢查擴展矩陣是否全部為 1.

int countSquares(int** matrix, int matrixSize, int* matrixColSize) {int ans=0,n=matrixSize,m=matrixColSize[0];for(int i=0;i<n;++i){for(int j=0;j<m;++j){if(matrix[i][j]){ans++;int f=1;for(int len=1;i+len<n&&j+len<m;++len){if(f){for(int k=0;k<=len;++k){if(!matrix[i+k][j+len]){f=0;break;}}if(f){for(int k=0;k<=len;++k){if(!matrix[i+len][j+k]){f=0;break;}}}if(f)ans++;}if(!f)break;}}}}return ans;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94044.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知識蒸餾 - 各類概率分布

知識蒸餾 - 各類概率分布 flyfish一、離散概率分布 離散分布描述的是取值為離散值&#xff08;如0,1,2,…&#xff09;的隨機變量的概率規律&#xff0c;通常用概率質量函數&#xff08;PMF&#xff09; 表示某一取值的概率。 1. 伯努利分布&#xff08;Bernoulli Distribution…

軟件測試-Selenium學習筆記

""" 目標&#xff1a; driver.find_element() 需求&#xff1a; 1. 使用driver.find_element()方法 2. 輸入用戶名&#xff1a;admin 3. 輸入密碼&#xff1a;123456 """ # 導包 from selenium import webdriver from time import …

知微傳感3D相機上位機DkamViewer使用:給相機升級固件

寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有&#xff1a; 1、便利他人應用相機&#xff0c;本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋&#xff1b;2、促進行業發展及交流。 知微傳感Dkam系列3D相機可以應用于定位分揀、焊接焊縫提取、…

CMake進階: CMake Modules---簡化CMake配置的利器

目錄 1.簡介 2.為什么需要 CMake Modules&#xff1f; 3.內置模塊&#xff1a;開箱即用的工具 3.1.依賴查找模塊&#xff08;FindXXX.cmake&#xff09; 3.2.功能檢測模塊&#xff08;CheckXXX.cmake&#xff09; 3.3.通用工具模塊&#xff08;如 FetchContent.cmake、CT…

【Docker】Ubuntu上安裝Docker(網絡版)

【Docker】Ubuntu上安裝Docker注意&#xff1a;一、環境準備1. 系統要求2. 卸載舊版本二、安裝步驟1.配置倉庫源2.安裝 Docker引擎3.驗證安裝情況三、解決報錯1、檢查網絡連接2、檢查Docker服務狀態3、換源4.重載生效、重啟服務、查看是否配置成功5.驗證解決情況四、權限與配置…

Socket 編程 TCP

TCP 網絡程序 和剛才 UDP 類似. 實現一個簡單的英譯漢的功能。TCP是面向字節流的可靠傳輸&#xff0c;如同前文的管道流&#xff0c;只要是流&#xff0c;它的操作就是文件的寫出與讀入。TCP socket API 詳解下面介紹程序中用到的 socket API,這些函數都在 sys/socket.h 中。so…

使用AWS S3 + Lambda + MediaConvert 實現上傳視頻文件并自動轉碼

前言 最近團隊在做短視頻平臺的技術調研&#xff0c;其中有一個環節便是音視頻開發&#xff0c;即對用戶上傳的視頻進行自適應轉碼。自適應的原理其實就是預先將視頻轉換為幾個常用的分辨率&#xff0c;app端根據用戶手機分辨率拉取相應分辨率的視頻。 目前嘗試了兩種方案&…

QT之QWaitCondition降低cpu占用率,從忙等待到高效同步

在多線程編程中&#xff0c;線程間的同步是一個核心問題。在處理線程等待時&#xff0c;經常會寫出高CPU占用率的代碼&#xff0c;其中最典型的就是使用忙等待&#xff08;busy waiting&#xff09;。本文將詳細介紹如何使用Qt框架中的QWaitCondition類來優雅地解決這一問題&am…

pcl求平面點云的邊界凸包點

基本流程1&#xff0c;讀入點云&#xff0c;并去除無效點2&#xff0c;擬合平面3&#xff0c;去除離平面距離較遠的點4&#xff0c;對點云進行平面投影5&#xff0c;進行convex_hull運算初學者&#xff0c;暫時不知道能用來干嘛。練手還是非常不錯的&#xff01;#define _CRT_S…

Windows系統上使用GIT

首先破除一下畏懼心理&#xff1a;在Windows上使用git和在linux系統中的使用方法是一樣的&#xff0c;只是安裝方式沒那么便捷&#xff0c;畢竟linux中安裝git只需要一行命令 GIT下載地址 如果你的電腦的CPU是64位的&#xff0c;就點擊&#xff1a; Git-2.50.1-64-bit.exe 如果…

《設計模式之禪》筆記摘錄 - 17.模板方法模式

模板方法模式的定義模板方法模式(Template Method Pattern)是如此簡單&#xff0c;以致讓你感覺你已經能夠掌握其精髓了。其定義如下&#xff1a;Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.Template Method lets subclasses r…

SpreadJS 協同服務器 MongoDB 數據庫適配支持

為了支持 SpreadJS 協同編輯場景&#xff0c;協同服務器需要持久化存儲文檔、操作、快照及里程碑數據。本文介紹了 MongoDB 數據庫適配器的實現方法&#xff0c;包括集合初始化、適配器接口實現以及里程碑存儲支持。 一、MongoDB 集合初始化 協同編輯服務需要以下集合&#x…

Ubuntu 主機名:精通配置與管理

主機名&#xff08;hostname&#xff09;是Linux系統中用于標識網絡上特定設備的名稱&#xff0c;它在網絡通信、服務配置&#xff08;如 Kubernetes 集群、數據庫&#xff09;以及日志記錄中扮演著至關重要的角色。對于初學者來說&#xff0c;配置主機名似乎很簡單&#xff0c…

C/C++ 協程:Stackful 手動控制的工程必然性

&#x1f680; C/C 協程&#xff1a;Stackful 手動控制的工程必然性 引用&#xff1a; C/C 如何正確的切換協同程序&#xff1f;&#xff08;基于協程的并行架構&#xff09; #mermaid-svg-SXgplRf3WRYc8A7l {font-family:"trebuchet ms",verdana,arial,sans-serif;…

新手向:使用STM32通過RS485通信接口控制步進電機

新手向&#xff1a;使用STM32通過RS485通信接口控制步進電機 準備工作 本文使用的STM32芯片是STM32F407ZGTx&#xff0c;使用的電機是57步進電機&#xff0c;驅動器是用的是時代超群的RS485總線一體化步進電機驅動器&#xff08;42 型&#xff1a;ZD-M42P-485&#xff09;。使…

設計模式筆記_行為型_命令模式

1.命令模式介紹命令模式&#xff08;Command Pattern&#xff09;是一種行為設計模式&#xff0c;它將請求或操作封裝為對象&#xff0c;使得可以用不同的請求對客戶端進行參數化。命令模式的核心思想是將方法調用、請求或操作封裝到一個獨立的命令對象中&#xff0c;從而使得客…

詳解MySQL中的多表查詢:多表查詢分類講解、七種JOIN操作的實現

精選專欄鏈接 &#x1f517; MySQL技術筆記專欄Redis技術筆記專欄大模型搭建專欄Python學習筆記專欄深度學習算法專欄 歡迎訂閱&#xff0c;點贊&#xff0b;關注&#xff0c;每日精進1%&#xff0c;與百萬開發者共攀技術珠峰 更多內容持續更新中&#xff01;希望能給大家帶來…

vue3+elemeent-plus, el-tooltip的樣式修改不生效

修改后的樣式&#xff0c;直接貼圖&#xff0c;經過刪除出現懸浮1、在書寫代碼的時候切記effect“light”&#xff0c;如果你需要的是深色的樣式:disabled"!multiple" 是否禁用<el-tooltip effect"light" placement"top" content"請先選…

網頁作品驚艷亮相!這個浪浪山小妖怪網站太治愈了!

大家好呀&#xff01;今天要給大家分享一個超級治愈的網頁作品——浪浪山小妖怪主題網站&#xff01;這個純原生開發的項目不僅顏值在線&#xff0c;功能也很能打哦&#xff5e;至于靈感來源的話&#xff0c;要從一部動畫說起。最近迷上了治愈系動畫&#xff0c;就想做一個溫暖…

搭建最新--若依分布式spring cloudv3.6.6 前后端分離項目--步驟與記錄常見的坑

首先 什么拉取代碼&#xff0c;安裝數據庫&#xff0c;安裝redis&#xff0c;安裝jdk這些我就不說了 導入數據庫 &#xff1a;數據庫是分庫表的 &#xff0c;不要建錯了 【一定要注意&#xff0c;不然nacos讀取不到配置文件】這個是給nacos用的這個是給項目配置或項目用的2. 服…