刷leetcodehot100返航版--哈希表5/5、5/6

回顧一下之前做的哈希,貌似只有用到

  • unordered_set:存儲無序元素
  • unordered_map:存儲無序鍵值對

代碼隨想錄

常用代碼模板2——數據結構 - AcWing

C++知識回顧-CSDN博客

1.兩數之和5/5【30min】

1. 兩數之和 - 力扣(LeetCode)

1.set和map分不清,set是只有值,map是鍵值對。

2、map的鍵值弄反了,找數的話,鍵是數,值是索引i

3.考慮如果有重復的數怎么辦:不要提前把數組轉成map,一邊遍歷一邊轉。

class Solution {//考慮輸入
public:vector<int> twoSum(vector<int>& nums, int target) {//快速判斷一個元素是否出現集合里//如果是哈希,怎么存數據//沒考慮一樣的元素// unordered_set<int> mySet;// for(int i= 0;i<nums.size();i++){//     mySet.insert(target - nums[i]);// }// for(int i= 0;i<nums.size();i++){//     auto iter = mySet.find(nums[i]);//     if(iter!=mySet.end()){//         continue;//     }//     return {i,*iter};// }unordered_map<int,int>findmap;//快速找下標//有重復的怎么辦for(int i = 0;i<nums.size();i++){auto it = findmap.find(target-nums[i]);if(it != findmap.end()){return {i,it->second};}findmap[nums[i]] = i;//索引和值反了}return {};}
};

2?字母異位詞分組【30min】

49. 字母異位詞分組 - 力扣(LeetCode)

map和set的區別,map是鍵值對,set是只有值,vector和set的區別是???

unordered_set/map比set/map用的多的原因是O(1)????

const string&使用引用避免拷貝【如果是不操作這個對象,可以省點空間,否則就創建了新對象】

語法問題:

// ? 錯誤代碼
for (auto it : mp) { ? ? ? ? // it是鍵值對的拷貝,不是迭代器!
? ? result.push_back(it->second); // 錯誤:it不是指針/迭代器
}

// ? 修正代碼
for (const auto& entry : mp) { // entry是鍵值對的引用
? ? result.push_back(entry.second); // 正確:用 . 訪問成員
}

?anto it = mp.find("a")這里it是指針

for(auto it : mp)這里it是一個對象,訪問pair的鍵or值需要用點(.)it.second

?問題:1.string的sort函數怎么用:有一個strs:sort(strs.begin(),strs.end())

2.鍵和值怎么考慮,這里其實不需要find

3.一對多的處理1個sort后的string對應多個string怎么辦:string對應vector<string>【妙】

4.string的初始化,有一個string a,則string b = a;

5.迭代器是指針還是對象,見上

6.想了一下一對多怎么處理,原來想用multiset,find(key)?返回指向?第一個匹配鍵?的元素的迭代器,可以用equal_range,放后,以后看。

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//tae和tea如何等價//如何處理輸入輸出//按次序排列?//先字符串排序,轉成一樣的用map存。然后find,鍵:原,值:改后的字符串vector<vector<string>>result;// unorder_map<string,string> word;//有重復怎么辦,如果multi_map有重復find返回什么//z這個不用find了,直接遍歷:鍵:改后的字符串;值:原unordered_map<string,vector<string>>mp;for(const auto &it:strs){//這里it是數組// string newOne = sort(it.begin(),it.end());string newOne = it;sort(newOne.begin(),newOne.end());mp[newOne].push_back(it);//*it?}for(const auto &it:mp){result.push_back(it.second);}return result;}};

#include <iostream>
#include <map>

int main() {
? ? std::multimap<int, std::string> mmap = {
? ? ? ? {1, "A"}, {1, "B"}, {2, "C"}, {1, "D"}
? ? };

? ? // 方法1:使用 find
? ? auto it = mmap.find(1);
? ? if (it != mmap.end()) {
? ? ? ? std::cout << "First match: " << it->second << std::endl; // A
? ? }

? ? // 方法2:使用 equal_range
? ? auto range = mmap.equal_range(1);
? ? std::cout << "All values for key 1:\n";
? ? for (auto it = range.first; it != range.second; ++it) {
? ? ? ? std::cout << " ?" << it->second << std::endl; // A, B, D
? ? }

? ? // 方法3:使用 lower_bound 和 upper_bound
? ? std::cout << "All values for key 1 (via bounds):\n";
? ? auto lower = mmap.lower_bound(1);
? ? auto upper = mmap.upper_bound(1);
? ? for (auto it = lower; it != upper; ++it) {
? ? ? ? std::cout << " ?" << it->second << std::endl; // A, B, D
? ? }

? ? return 0;
}

3.最長連續序列[7min]

128. 最長連續序列 - 力扣(LeetCode)

class Solution {
public:int longestConsecutive(vector<int>& nums) {//字連續的最長序列(不要求序列元素在原數組中連續)的長度。//sort(O(logn))if(nums.size()==0){return 0;}//[]:0sort(nums.begin(),nums.end());int max = 1;//[0]:0int count = 1;for(int i = 0;i<nums.size();i++){if(i == nums.size()-1){break;}if(nums[i] == (nums[i+1]-1)){count++;}else if(nums[i] == nums[i+1]){continue;}else{count = 1;}if(count>=max){max = count;}}return max;//[1,0,1,2]}
};

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

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

相關文章

openwrt 使用quilt 打補丁(patch)

1,引入 本文簡單解釋如何在OpenWRT下通過quilt命令打補丁--patch&#xff0c;也可查看openwrt官網提供的文檔 2&#xff0c;以下代碼通過編譯net-snmp介紹 ① 執行編譯命令之后&#xff0c;進入build_dir的net-snmp-5.9.1目錄下&#xff0c;改目錄即為snmp最終編譯的目錄了 /…

【開發工具】Window安裝WSL及配置Vscode獲得Linux開發環境

筆者面試時需要本地IDE手撕代碼并測試&#xff0c;但是windows開發環境用不習慣&#xff0c;Min64和json配置也比較麻煩&#xff0c;因此采用WSLvscode的方式快速配置Linux開發環境 WSL安裝 直接在微軟商店搜索WSL即可 系統設置 開始菜單搜索啟用或關閉 Windows 功能&…

【C語言】初階數據結構相關習題(一)

&#x1f386;個人主頁&#xff1a;夜晚中的人海 今日語錄&#xff1a;人的生命似洪水在奔流&#xff0c;不遇著島嶼、暗礁&#xff0c;難以激起美麗的浪花。——奧斯特洛夫斯基 文章目錄 ?一、判定是否互為字符重排&#x1f389;二、 回文排列&#x1f680;三、字符串壓縮&am…

MySQL----數據庫的操作

1. 查看數據庫 語法&#xff1a;show databases; 示例展示&#xff1a; 2. 創建庫 語法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name]; 注意&#xff1a;[] 為可選項 {} 為必選項 database_name 為數據…

Dagger中編譯import報找不到ProvideClientFactory,initialize中ProvideClientFactory爆紅

解決方案&#xff1a;將對應Module移到主模塊&#xff0c;可能是依賴循環使用導致或者是模塊之間無法訪問及通信導致 為了重現問題&#xff0c;我還遠了此操作

Nacos源碼—4.Nacos集群高可用分析四

大綱 6.CAP原則與Raft協議 7.Nacos實現的Raft協議是如何寫入數據的 8.Nacos實現的Raft協議是如何選舉Leader節點的 9.Nacos實現的Raft協議是如何同步數據的 10.Nacos如何實現Raft協議的簡版總結 8.Nacos實現的Raft協議是如何選舉Leader節點的 (1)初始化RaftCore實例時會開…

擬南芥T2T基因組-文獻精讀127

A near-complete assembly of an Arabidopsis thaliana genome 擬南芥基因組的近乎完整組裝 擬南芥&#xff08;Arabidopsis thaliana&#xff09;基因組序列作為廣泛應用的模式物種&#xff0c;為植物分子生物學研究提供了巨大的推動力。在基因組序列首次發布后的20多年&…

一個關于fsaverage bem文件的說明

MNE文檔&#xff1a;基于模板 MRI 的 EEG 前向算子 Head model and forward computation 在了解了腦圖譜發展的過程之后&#xff0c;對腦的模版有了更深的認識&#xff0c;所以&#xff0c;對于之前使用的正向的溯源文件&#xff0c;進行一下解析&#xff0c;查看包含的信息&a…

C#學習第21天:安全與加密(Security and Cryptography)

核心概念 1. 什么是加密&#xff1f; 加密&#xff1a;加密是一種將數據轉換為一種不可讀形式的方法&#xff0c;只有持有相應密鑰的人才能解密并讀取數據。目的&#xff1a;確保數據的機密性和安全性&#xff0c;特別是在傳輸過程中過防止未授權訪問。 2. 加密類型 對稱加密…

OpenCV 圖形API(77)圖像與通道拼接函數-----對圖像進行幾何變換函數remap()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對圖像應用一個通用的幾何變換。 函數 remap 使用指定的映射對源圖像進行變換&#xff1a; dst ( x , y ) src ( m a p x ( x , y ) , m a p y…

在線時間戳轉換工具

給大家推薦一個在線時間戳轉換工具 點擊跳轉-鴿鴿在線工具 這個工具除了時間戳轉換&#xff0c;到首頁還能選擇使用很多其他小工具&#xff0c;歡迎使用

WPF之面板特性

文章目錄 1. 概述2. WPF布局系統基礎2.1 布局過程概述2.2 布局重新計算的觸發條件2.3 布局重新計算的核心方法 3. WPF內置面板類型及特性3.1 面板類型概覽3.2 Canvas面板3.3 StackPanel面板3.4 WrapPanel面板3.5 DockPanel面板3.6 Grid面板3.7 UniformGrid面板3.8 Virtualizing…

【技術追蹤】通過潛在擴散和先驗知識增強時空疾病進展模型(MICCAI-2024)

向擴散模型中引入先驗知識&#xff0c;實現疾病進展預測&#xff0c;擴散模型開始細節作業了~ 論文&#xff1a;Enhancing Spatiotemporal Disease Progression Models via Latent Diffusion and Prior Knowledge 代碼&#xff1a;https://github.com/LemuelPuglisi/BrLP 0、摘…

[ linux-系統 ] 常見指令2

1. man 指令 語法&#xff1a;man [選項] 命令 功能&#xff1a;查看聯機手冊獲取幫助。 選項說明-k根據關鍵字搜索聯機幫助。num只在第num章節找。-a顯示所有章節的內容。 man是 Unix 和類 Unix 系統中的一個命令&#xff0c;用于查看操作系統和軟件的手冊頁面&#xff08;ma…

STL之stackqueue

stack的介紹&#xff08;可以想象成棧&#xff09; 1.stack是一種容器適配器&#xff0c;專門用在具有后進先出操作的上下文環境中&#xff0c;其刪除只能從容器的一端進行元素的插入與提取操作 2.stack是作為容器適配器被實現的&#xff0c;容器適配器即是對特點類封裝作為其…

【現代深度學習技術】現代循環神經網絡06:編碼器-解碼器架構

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?PyTorch深度學習 ? ? ? 深度學習 (DL, Deep Learning) 特指基于深層神經網絡模型和方法的機器學習。它是在統計機器學習、人工神經網絡等算法模型基礎上&#xff0c;結合當代大數據和大算力的發展而發展出來的。深度學習最重…

宏電全新升級單北斗5G電力DTU,為每一公里電力線路注入可靠連接

在配網自動化改造與數字化轉型的雙重驅動下&#xff0c;宏電股份推出全新升級版H7710-DLWZ系列5G電力DTU&#xff0c;聚焦配網通信鏈路冗余、國產自主可控、復雜環境適應性三大核心需求&#xff0c;為配電自動化、臺區智能運維、分布式能源接入等場景提供高可靠通信底座。 國產…

學習海康VisionMaster之間距檢測

一&#xff1a;進一步學習了 今天學習下VisionMaster中的間距檢測工具&#xff1a;主要類似于卡尺工具&#xff0c;測量物體的長度或者寬度或者間距 二&#xff1a;開始學習 1&#xff1a;什么是間距檢測&#xff1f; 間距測量模塊用于檢測兩特征邊緣之間的間距&#xff0c;首…

藍橋杯 18. 積木

積木 原題目鏈接 題目描述 小明用積木搭了一個城堡。為了方便&#xff0c;小明使用的是大小相同的正方體積木&#xff0c;并將其搭建在一個 n 行 m 列的方格圖上。每個積木占據方格圖中的一個小格子。 小明的城堡是立體的&#xff0c;可以將積木壘在其他積木上。當某個格子…

C++負載均衡遠程調用學習之基礎TCP服務

目錄 1.LARS課程模塊介紹 2.LARS的功能演示機場景作用 3.LARS的reactor框架的組成部分 4.Lars_reactor的項目目錄構建 5.Lars_tcp_server的基礎服務開發 6.Lars_tcp_server的accept實現 7.LarsV0.1總結 1.LARS課程模塊介紹 2.LARS的功能演示機場景作用 # Lars系統開發 …