算法 ---哈希表

一、哈希介紹

是什么

存儲數據的容器

什么用

快速查找某個元素

什么時候用哈希表

頻繁的查找某一個數的時候

怎么用哈希表

(1)容器(哈希表)

(2)用數組模擬哈希表(字符串的字符,數據范圍很小的時候)

二、題目

1、兩數之和

兩數之和

(1)題目

(2)解題思路

解題思路一:雙指針,遍歷整個數組,把符合條件的返回

解題思路二:用哈希表,將數組下標和值存起來,在遍歷數組的時候,在哈希表中尋找目標值和當前遍歷的值的差值

(3)代碼實現

解法一:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {for(int i = 0; i<nums.size(); i++){for(int j = i+1; j<nums.size(); j++){if(nums[i]+nums[j]==target){return{i,j};}}}return {-1,-1};}
};

class Solution 
{
public:vector<int> twoSum(vector<int>& nums, int target) {for(int i = 0; i<nums.size();i++){for(int j = 0; j<i;j++){if(nums[i]+nums[j] == target){return {i,j};}}}  return {-1,-1}; }
};

解法二:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> hash;for(int i = 0 ; i<nums.size();i++){int t = target - nums[i] ;if(hash.count(t)){return {hash[t], i};}hash[nums[i]] = i;}return {-1,-1};}
};

2、判斷數組是否重排

?判斷數組是否重排

?(1)題目

(2)解題思路

我們可以用數組模擬哈希表,開一個數為26的數組,首先遍歷其中一個字符串將每一個字母-'0'的位置--,然后再遍歷另外一個字符串將每一個字母的-'0'的字母++,最后遍歷數組如果存在不是0的數就不是重排

(3)代碼書寫

class Solution 
{
public:bool CheckPermutation(string s1, string s2) {if(s1.size()!=s2.size()){return false;}int nums[26]={0};for(int i = 0; i < s1.size(); i++){nums[s1[i]-'a']++; nums[s2[i]-'a']--; }for(int j = 0; j<26;j++){if(nums[j]!=0)return false;}return true;}
};

3、存在重復元素

存在重復元素

(1)題目

?(2)解題思路

? ? ? ?我們創立一個哈希表,遍歷nums,如果存在數組中的值則返回true,不存在數組中的則插入

(3)代碼實現

class Solution 
{
public:bool containsDuplicate(vector<int>& nums) {unordered_set<int> hash;for(auto x: nums)if(hash.count(x))return true;else hash.insert(x);return false;}
};

4、存在重復元素二

存在重復元素二

?(1)題目

(2)解題思路

? ?創建一個哈希表,遍歷nums如果哈希表中存在該下標的值,判斷該下標和原先所存儲的小表達差值是否小于k,如果是,返回true,否則覆蓋下標,如果哈希表中部存在該下標的值,則插入

(3)代碼實現

class Solution 
{
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int , int> hash;for(int i = 0 ; i<nums.size(); i++){if(hash.count(nums[i])) {if(i - hash[nums[i]]<=k){return true;}else{hash[nums[i]] = i;}}else{hash[nums[i]] = i;}}return false;}
};

5、字母異位詞分組

字母異位詞分組

(1)題目

?

(2)解題思路

我們可以創立一個哈希表string ,vector<string> 然后遍歷strs,將他的值排序后如果hash表中含有,插入到vector<string>中

(3)代碼實現

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string ,vector<string>> hash;for(auto&e: strs){string tmp = e;sort(tmp.begin(),tmp.end());hash[tmp].push_back(e);}vector<vector<string>> ret;for(auto &[x,y] : hash){ret.push_back(y);}return ret;}};

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

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

相關文章

基于分布式環境的令牌桶與漏桶限流算法對比與實踐指南

基于分布式環境的令牌桶與漏桶限流算法對比與實踐指南 在高并發的分布式系統中&#xff0c;限流是保障服務可用性和穩定性的核心手段。本文聚焦于令牌桶算法與漏桶算法在分布式環境下的實現與優化&#xff0c;對多種解決方案進行橫向對比&#xff0c;分析各自的優缺點&#xff…

WPF MVVM入門系列教程(TabControl綁定到列表并單獨指定每一頁內容)

在以前的開發過程中&#xff0c;對于TabControl控件&#xff0c;我一般是習慣直接定義TabItem&#xff0c;在TabItem下布局&#xff0c;并進行綁定。 類似這樣 1 <TabControl ItemsSource"{Binding TabList}" SelectedIndex"0">2 <TabItem…

L2CAP 面向連接信道(CoC)在 BLE 中的應用:建立、流控與數據傳輸

在物聯網(IoT)蓬勃發展的今天,低功耗藍牙(BLE)技術因其高效節能、低成本等特性,成為短距離無線通信的首選方案。作為 BLE 協議棧的核心組件,邏輯鏈路控制與適配協議(L2CAP)的面向連接信道(CoC)承擔著數據傳輸的關鍵任務。本文將深入解析 L2CAP CoC 在 BLE 中的應用,…

醫療AI與醫院數據倉庫的智能化升級:異構采集、精準評估與高效交互的融合方向(上)

摘要: 隨著醫療信息化建設的深入,醫院數據倉庫(Data Warehouse, DW)作為醫療AI應用的核心數據底座,其效能直接決定智能化轉型的深度與廣度。本文聚焦醫療AI驅動下醫院數據倉庫的三大關鍵升級功能——異構采集支持數據庫體檢與智能SQL分析、評估引擎重構實現六大數據庫精準…

2015-2018年咸海流域1km歸一化植被指數8天合成數據集

數據集摘要數據集包含2015年-2018年咸海流域NDVI 8天均值數據。提取美國國家航空航天局中分辨率成像光譜儀MOD13A2產品第一波段作為歸一化植被指數數據&#xff0c;乘以比例因子0.0001&#xff0c;疊加咸海流域邊界數據&#xff0c;裁切后得到咸海流域范圍內的NDVI月均值數據。…

Kafka消息持久化機制全解析:存儲原理與實戰場景

目錄 引言? 一、Kafka消息持久化的核心目標 二、底層存儲機制深度剖析 1.【文件系統分層】——日志分組 日志段 核心結構 示例目錄結構 2.【消息寫入流程】——從內存到磁盤的旅程?? 3.【默認存儲參數】——生產環境的黃金比例 三、典型應用場景與案例實戰 案例1…

Python訓練營打卡Day41-Grad-CAM與Hook函數

知識點回顧回調函數lambda函數hook函數的模塊鉤子和張量鉤子Grad-CAM的示例 作業&#xff1a;理解下今天的代碼即可 在深度學習中&#xff0c;我們經常需要查看或修改模型中間層的輸出或梯度。然而&#xff0c;標準的前向傳播和反向傳播過程通常是一個黑盒&#xff0c;我們很難…

使用VBA宏批量修改Word中表格題注格式

目錄&#x1f4c2; 使用步驟? 方式一&#xff1a;應用已有樣式&#xff08;推薦&#xff09;代碼實現說明? 方式二&#xff1a;手動設置字體格式&#xff08;無需預定義樣式&#xff09;代碼實現參數說明如何運行宏&#xff1f;補充建議總結在撰寫論文、技術文檔或報告時&…

Redis面試精講 Day 27:Redis 7.0/8.0新特性深度解析

【Redis面試精講 Day 27】Redis 7.0/8.0新特性深度解析 在“Redis面試精講”系列的第27天&#xff0c;我們將聚焦Redis最新版本——7.0與8.0的核心新特性。隨著Redis從內存數據庫向云原生、高可用、高性能中間件持續演進&#xff0c;7.0和8.0版本引入了多項顛覆性改進&#xf…

使用自制的NTC測量模塊測試Plecs的熱仿真效果

之前構建的 NTC 溫度測量模型是進行 PLECS 熱仿真的完美起點和核心組成部分。 PLECS 的強大之處在于它能夠進行多域仿真,特別是電-熱聯合仿真。您可以將電路仿真(包括您的 NTC 測量模型)與熱仿真(散熱器、熱容、熱阻等)無縫地結合起來。 電-熱聯合仿真原理 整個仿真閉環…

C語言初學者筆記【動態內存管理】

、 文章目錄一、為什么需要動態內存分配&#xff1f;二、malloc 和 free1. malloc2. free三、calloc 和 realloc1. calloc2. realloc四、常見的動態內存錯誤1. 對 NULL 解引用2. 越界訪問3. 對非動態內存使用 free4. 釋放部分動態內存5. 多次釋放同一塊內存6. 內存泄漏五、動態…

AI模型部署 - 大語言模型(LLM)部署技術與框架

目錄 一、 大語言模型部署的核心挑戰與關鍵技術 二、 主流開源部署框架深度解析 2.1. Ollama:本地部署的極簡主義者 2.2. Hugging Face TGI (Text Generation Inference) 2.3. vLLM:為吞吐量而生 2.4. sglang:面向復雜提示與結構化輸出的革新者 三、 特定硬件與云平臺…

Windows11 GeForce GTX 1060 CUDA+CUDNN+Pytorch 下載及安裝

一、查看顯卡型號信息 系統&#xff1a;Windows11 顯卡&#xff1a;GeForce GTX 1060 型號&#xff1a; &#xff08;1&#xff09;搜索 NVIDIA&#xff0c;選擇 NVIDIA Control Panel&#xff08;2&#xff09;打開 NVIDIA control Panel&#xff0c;打開系統信息&#xff0c;…

在通義靈碼中配置MCP服務

目錄 查找mcp列表 通義靈碼中配置MCP 使用方式 STDIO (Standard Input/Output) 組成部分&#xff1a; SSE (Server-Sent Events) 特點&#xff1a; 主要區別對比 配置方式 配置優先級 個人設置 項目設置 驗證 通過MCP調用高德地圖 查找mcp列表 打開ModelScope - …

網絡中的IO問題(五種常見的IO方式)

什么是高效的IO&#xff1f; 正常情況下&#xff0c;IO等拷貝 高效的IO拷貝&#xff08;即讓IO盡量不等&#xff09; 為什么我們平常玩電腦的時候&#xff0c;感覺不到等待的過程呢&#xff1f; 任何通信場景&#xff0c;IO通信場景&#xff0c;效率一定是有上限的. 花盆里&am…

JAVA核心基礎篇-修飾符

Java 修飾符主要用于定義類、方法或變量&#xff0c;通常放在語句的最前端&#xff0c;可分為訪問修飾符和非訪問修飾符兩類。一、訪問修飾符public&#xff1a;對所有類可見&#xff0c;可用于類、接口、變量和方法。被聲明為 public 的類、方法、構造方法和接口能夠被任何其他…

筆試——Day46

文章目錄第一題題目思路代碼第二題題目思路代碼第三題題目思路代碼第一題 題目 AOE還是單體&#xff1f; 思路 貪心 剩余怪物數量 >x時&#xff0c;使用AOE&#xff1b;否則使用單體 代碼 #include <iostream> #include <algorithm> using namespace std;…

零工合規挑戰:蓋雅以智能安全體系重構企業用工風控

國家稅務總局發布的2025年第15號公告&#xff0c;將多種互聯網平臺企業納入涉稅信息報送范圍&#xff0c;這讓靈活用工平臺的數據和網絡安全問題成為行業關注的焦點。在海量零工信息和企業數據流轉的過程中&#xff0c;數據泄露和網絡攻擊的風險不斷上升&#xff0c;迫使平臺在…

非線性規劃學習筆記

非線性規劃學習筆記 一、非線性規劃的應用 非線性規劃&#xff08;Nonlinear Programming, NLP&#xff09;在很多領域都有重要應用&#xff0c;主要包括&#xff1a; 工程設計優化&#xff1a;結構優化、電路參數優化、交通線路設計經濟與管理&#xff1a;投資組合優化、生產計…

網絡模型深度解析:CNI、Pod通信與NetworkPolicy

目錄 專欄介紹 作者與平臺 您將學到什么&#xff1f; 學習特色 網絡模型深度解析&#xff1a;CNI、Pod通信與NetworkPolicy 第一部分&#xff1a;CNI 插件原理 - 網絡基礎設施的構建者 1.1 CNI 規范&#xff1a;標準化網絡接入的基石 1.2 Flannel&#xff1a;簡單高效的…