枚舉中間位置高級篇

參考資料來源靈神在力扣所發的題單,僅供分享學習筆記和記錄,無商業用途。

核心思路:參考枚舉中間位置基礎篇-CSDN博客

力扣題單練習(靈神題單中摘取題目)

447. 回旋鏢的數量

核心思路:

因給出的點都不相同,所以不會出現枚舉到當前點的次數會>=2的情況,枚舉每一個點對當前點的距離,從而得出有多少個點到當前點距離一致。

若有 m 個點到點 i 的距離都相同,那么能夠組成的回旋鏢數量就是 m * (m - 1)。這是因為從 m 個點里選 2 個點進行排列,排列數為 A(m, 2) = m * (m - 1)。

計算從m個點中選2個點進行排列動態(邊統計數量)計算:ret+=map[buff]++*2;

class Solution {
public:int numberOfBoomerangs(vector<vector<int>>& points) {//核心思路:因給出的點都不相同,所以不會出現枚舉到當前點的次數會>=2的情況,枚舉每一個點對當前點的距離,從而得出有多少個點到當前點距離一致。//若有 m 個點到點 i 的距離都相同,那么能夠組成的回旋鏢數量就是 m * (m - 1)。這是因為從 m 個點里選 2 個點進行排列,排列數為 A(m, 2) = m * (m - 1)。int ret=0;unordered_map<int,int> map;for(auto& x:points){int buff=0;for(auto& y:points){buff=(x[0]-y[0])*(x[0]-y[0])+(x[1]-y[1])*(x[1]-y[1]);//采用的是動態計算的方式,在每次發現新點時,就把新增的組合數量累加到 ret 中。這樣一來,當統計完所有點之后,ret 中存儲的就是最終的結果。ret+=map[buff]++*2;}map.clear();}return ret;}
};

456. 132 模式

核心思路:

枚舉中間位置 j,尋找左側最小值與右側次小值。采用自底向上單調遞減棧維護右側,保證滿足棧頂大于左側最小值的同時并且嘗試滿足小于當前元素

class Solution {
public:bool find132pattern(vector<int>& nums) {//核心思路:枚舉中間位置 j,尋找左側最小值與右側次小值。采用自底向上單調遞減棧維護右側,保證滿足棧頂大于左側最小值的同時并且嘗試滿足小于當前元素int n=nums.size();if(n<3) return false;vector<int> left_min(n);left_min[0]=INT_MAX;//維護當前下標前面區間的最小值for(int i=1;i<n;i++) left_min[i]=min(left_min[i-1],nums[i-1]);stack<int> s; //存放可能滿足條件的nums[k],維護自底向上遞減棧,j實際上就是a[k]左側第一個嚴格大于a[k]的元素下標for(int i=n-1;i>=1;i--){int current=nums[i];  //當前元素int buff=left_min[i]; //左側區間最小值if(buff>=current) continue; //當前位置元素不合法while(!s.empty() && s.top()<=buff) s.pop(); //保證nums[k]>nums[i]if(!s.empty() && s.top()<current) return true; //棧頂元素為可能滿足條件的最小元素,如果存在棧頂元素<nums[j]則存在132模式s.push(current);}return false;}
};

3067. 在帶權樹網絡中統計可連接服務器對數目

題意:

給定一個雙向路徑帶權節點數組,要求找到一個節點有至少2條不同的路徑并且到路徑上的節點的權重可以被signalSpeed整除,統計有多少對滿足條件的服務器對組合。

核心思路:

根據給定數組構建路徑圖,枚舉每一個節點,保證有至少兩條不同路徑。深搜找滿足條件的數量,然后進行局部計算組合數量最終得到全部滿足條件的組合數量

乘法原理:累加使用過的節點數*當前新統計節點,然后更新使用過的節點數

class Solution {
public://深搜:查找根元素到當前元素的權重可以被signalSpeed整除的節點數量int dfs(vector<vector<pair<int,int>>>& f, int x, int i, int sum, int signalSpeed){int cnt=sum%signalSpeed==0;for(auto &[y,w]:f[x]){if(y!=i) cnt+=dfs(f,y,x,sum+w,signalSpeed);}return cnt;}vector<int> countPairsOfConnectableServers(vector<vector<int>>& edges, int signalSpeed) {//題意:給定一個雙向路徑帶權節點數組,要求找到一個節點有至少2條不同的路徑并且到路徑上的節點的權重可以被signalSpeed整除,統計有多少對滿足條件的服務器對組合。//核心思路:根據給定數組構建路徑圖,枚舉每一個節點,保證有至少兩條不同路徑。深搜找滿足條件的數量,然后進行局部計算組合數量最終得到全部滿足條件的組合數量int n=edges.size()+1;vector<vector<pair<int,int>>> f(n+1);//建立路徑圖for(auto &k:edges){int x=k[0],y=k[1],w=k[2];f[x].push_back({y,w});f[y].push_back({x,w});}vector<int> ret(n);for(int i=0;i<=n;i++){if(f[i].size()<=1) continue;int cnt=0;for(auto &[x,w]:f[i]){int buff=dfs(f,x,i,w,signalSpeed);ret[i]+=buff*cnt;  //用前面統計過局部答案的節點數*新滿足條件的節點數獲得當前局部答案。保證了最后能算出總組合數cnt+=buff; //前面統計過組合的節點數} }return ret;}
};

靈神枚舉中間題單2000分以下題目以完成,后續會更新2000+題目的題解

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

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

相關文章

主數據管理系統能代替數據中臺嗎?

目錄 一、主數據管理系統≠數據中臺 1. 主數據管理系統&#xff1a;管的是 “不變的核心數據” 2. 數據中臺&#xff1a;管的是 “流動中的價值” 二、為什么企業更該先建 MDM&#xff1f; 1. 數據中臺解決不了數據本身問題 2. MDM 可以解決常見的基礎問題 3. 數字化轉型…

Nmap 終極教程:安裝、常用命令及法律法規指南

Nmap 終極教程&#xff1a;安裝、常用命令及法律法規指南 Nmap&#xff08;Network Mapper&#xff09;是一款強大的 網絡掃描和安全審計工具&#xff0c;廣泛用于滲透測試、網絡探測和系統管理。本教程涵蓋 安裝方法、常用命令詳解、輸出解析 以及 法律法規注意事項&#xff…

開源嵌入式數組引擎TileDB的簡單使用

TileDB 是C編寫的存儲和訪問通用多維數組引擎&#xff0c;它的官方Github網站https://github.1git.de/TileDB-Inc/TileDB 1.下載源代碼和二進制庫 源代碼https://github.1git.de/TileDB-Inc/TileDB/archive/refs/tags/2.28.1.tar.gz 選擇符合你的機器CPU架構和操作系統的庫 二進…

AI對服務器行業的沖擊與啟示:從挑戰走向重構

更多云服務器知識&#xff0c;盡在hostol.comAI&#xff08;人工智能&#xff09;技術的迅猛發展&#xff0c;已深刻影響了多個行業&#xff0c;服務器行業亦不例外。在過去&#xff0c;服務器的主要任務是簡單地提供存儲、計算和傳輸數據的服務。然而&#xff0c;隨著AI的崛起…

基于三臺主機搭建 Web 服務環境:Nginx、NFS 與 DNS 配置全流程

基于三臺主機搭建 Web 服務環境&#xff1a;Nginx、NFS 與 DNS 配置全流程 一、引言 在當今數字化的時代&#xff0c;搭建一個穩定、高效的 Web 服務環境是許多開發者和運維人員的常見需求。本文將詳細介紹如何利用三臺主機搭建一個包含 Nginx、NFS 和 DNS 服務的 Web 環境&…

MySQL——MVCC

1.為什么需要MVCC在并發場景下&#xff0c;讀寫操作會面臨嚴重的沖突問題&#xff1a;1.讀操作如果遇到寫操作&#xff0c;要么“讀到未提交的臟數據”&#xff0c;要么“被寫操作阻塞&#xff08;等待鎖釋放&#xff09;”&#xff1b;2.寫操作如果遇到讀操作&#xff0c;要么…

數據結構第2問:什么是算法?

算法 算法是一組用于解決具體問題的、明確的、有序的步驟或規則&#xff0c;能夠在有限的時間內通過這些步驟得到問題的答案。 算法的5個重要特性&#xff1a; 有窮性&#xff1a;算法必須在有限的步驟內結束&#xff0c;不能無限循環&#xff0c;保證最終能夠得到結果。確定性…

12-大語言模型—Transformer 打地基,下游任務蓋出百樣房,指標來驗收|下游任務白話指南

目錄 1、核心邏輯&#xff1a;Transformer 的 “語言處理閉環” 2、轉導與感知 → 模型咋 “理解語言”&#xff1f; 2.1、 人類 vs 機器的 “語言理解邏輯” 2.2、 自注意力機制&#xff1a;模型 “理解語言” 的數學核心 2.2.1、通俗拆解 2.2.1.1、是什么&#xff1f; …

深入探索爬蟲與自動化腳本:釋放效率的利器

在當今信息爆炸的時代&#xff0c;高效獲取和處理數據已成為核心競爭力。爬蟲與自動化腳本正是解決這一痛點的關鍵技術——它們如同數字世界的勤勞助手&#xff0c;幫我們自動完成繁瑣重復的任務。下面我們來系統了解這兩項技術的核心要點、應用場景和最佳實踐。一、爬蟲與自動…

React函數組件的“生活管家“——useEffect Hook詳解

&#x1f3af; React函數組件的"生活管家"——useEffect Hook詳解 1. &#x1f31f; 開篇&#xff1a;從生活中的"副作用"說起 嘿&#xff0c;各位掘友們&#xff01;今天咱們來聊聊React函數組件里的一個“大管家”——useEffect Hook。你可能會問&#x…

python基礎:request請求Cookie保持登錄狀態、重定向與歷史請求、SSL證書校驗、超時和重試失敗、自動生成request請求代碼和案例實踐

Cookie保持登錄狀態cookie session鑒權機制 cookie是由web服務器保存在用戶瀏覽器&#xff08;客戶端&#xff09;上的小文本文件&#xff0c;他可以包含有關用戶的信息。無論何時用戶訪問到服務器&#xff0c;都會帶上該服務器的cookie信息&#xff0c;一般cookie都是有有效期…

Vulkan入門教程 | 第二部分:創建實例

前言&#xff1a;本教程為筆者依據教程https://docs.vulkan.net.cn/spec/latest/index.html#_about進行Vulkan學習并結合自己的理解整理的筆記&#xff0c;供大家學習和參考。 &#xff08;注意&#xff1a;代碼僅為片段&#xff0c;非完整程序&#xff09; 學習前提&#xff1…

PHP云原生架構:容器化、Kubernetes與Serverless實踐

引言 隨著云計算的普及,PHP應用也在向云原生架構演進。本文將深入探討PHP在云原生環境中的最佳實踐,包括容器化部署、Kubernetes編排、Serverless架構以及云原生監控與日志方案,幫助開發者構建現代化、可擴展的PHP應用。 容器化PHP應用 基礎Dockerfile優化 # 多階段構建…

【華為機試】5. 最長回文子串

文章目錄5. 最長回文子串描述示例 1示例 2示例 3示例 4提示解題思路方法一&#xff1a;中心擴展法&#xff08;推薦&#xff09;方法二&#xff1a;動態規劃方法三&#xff1a;Manacher算法方法四&#xff1a;暴力解法代碼實現復雜度分析測試用例完整題解代碼5. 最長回文子串 …

【圖像處理基石】如何對遙感圖像進行實例分割?

遙感圖像實例分割是指在遙感影像中&#xff0c;不僅要識別出不同類別的目標&#xff08;如建筑物、車輛、道路等&#xff09;&#xff0c;還要區分同一類別中的不同個體&#xff08;如建筑物1、建筑物2&#xff09;&#xff0c;并為每個實例生成精確的像素級掩碼。 一、遙感圖…

電子電氣架構 --- 軟件bug的管理模式

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

【每日一錯】Oracle 19c CDB中如何啟動一個PDB

文章目錄題目擴展學習CDB與PDB的概念CDB&#xff0c;PDB結構優勢總結題目 擴展學習 CDB與PDB的概念 在Oracle 12c及以上版本&#xff0c;Oracle引入了多租戶架構&#xff0c;這種架構讓數據庫的管理和資源使用更加高效。它由兩種主要組成部分組成&#xff1a; CDB&#xff0…

Android studio自帶的Android模擬器都是x86架構的嗎,需要把arm架構的app翻譯成x86指令?

Android studio自帶的Android模擬器都是x86架構的嗎&#xff0c;需要把arm架構的app翻譯成x86指令&#xff1f; deepseek回答&#xff1a; Android Studio 自帶的官方模擬器&#xff08;Android Emulator&#xff09;主要提供基于 x86 架構的系統鏡像。當運行 ARM 架構的應用…

Deep Learning_ Foundations and Concepts-Springer (2024)【拜讀】20章3節

Diffusion Models 擴散模型 我們已經了解到&#xff0c;構建強大的生成模型的一種有效方法是&#xff1a;先引入一個關于潛在變量z的分布p(z)&#xff0c;然后使用深度神經網絡將z變換到數據空間x。由于神經網絡具有通用性&#xff0c;能夠將簡單固定的分布轉化為關于x的高度靈…

Arduino與STM32:初學者該如何選擇?

在電子愛好者和初學者的世界里&#xff0c;Arduino和STM32是兩個經常被提及的名字。它們各自具有獨特的優勢和特點&#xff0c;適合不同類型的項目和需求。對于初學者來說&#xff0c;選擇Arduino還是STM32&#xff0c;往往取決于個人的學習目標、項目需求以及預算。本文將詳細…