哈希表day5

242 有效的字母異位詞

思路就是轉為ASCII碼,然后用一個數組記錄26位字母出現的次數

#include <string>
class Solution{
public:bool isAnagram(string s,string t){int record[26]={0};for (int i=0;i<s.size();i++){record[s[i]-'a']++;}for (int i=0;i<t.size();i++){record[t[i]-'a']--;}for (int i=0;i<26;i++){if (record[i]!=0) return false;}return true;}
};

349 兩個數組的交集

這部分學習到的知識就多了
1、std::unordered_set,這是一個C++容器,底層是哈希表,查詢復雜度為O(1),其次,他不允許有重復的值(也就是說,將vector nums的值放進去,會自動去重)
2、如何將vector的東西放進unordered_set中呢?

unordered_set<int> num_set(nums1.begin(),nums1.end());

同理,將unordered_set中的東西放進到vector中

vector<int> result(unordered_set.begin(),unordered_set.end())

3、如何對unordered_set中的元素進行查找呢?
使用nums_set.find(num) 如果找到了,那么就返回一個 指向該元素的迭代器,如果沒找到,就返回nums_set.end()這個特殊的迭代器。

#include <vector>
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { //參數為nums1的引用,nums2的引用unordered_set<int> result_set;  //自動去重 + 查找速度快(平均 O(1))unordered_set<int> nums_set(nums1.begin(),nums1.end());//構建一個新的unordered_set,把nums1放進nums_set中,使用的是迭代器的語法,從nums1的begin到nums1的endfor (int num:nums2){ //遍歷 nums2 中的每一個數字 num。if (nums_set.find(num)!=nums_set.end()){    //如果nums_set.find(num)返回一個指向該元素的迭代器;如果沒找到,那么就返回的是 nums_set.end(),這是一個“尾后迭代器”,表示“找不到”。result_set.insert(num); 
// 如果 num 存在于 nums_set 中:
// 返回一個 指向該元素的迭代器。
// 如果 num 不存在于 nums_set 中:
// 返回一個特殊的迭代器 —— nums_set.end(),表示“查找失敗”或“無此元素”。}}return vector<int>(result_set.begin(),result_set.end()) //result_set.begin() 到 result_set.end() 形成一個范圍,傳給 vector 構造函數;}
};

202 快樂數

set.insert(num);
也就是將num加入到集合中

class Solution {
public:int getSum(int n){int result=0;while(n){result += (n%10)*(n%10);n = n/10;}return result;}bool isHappy(int n) {unordered_set<int> set;while(1){//不斷循環int sum = getSum(n);if (sum==1){return true;}if (set.find(sum)!= set.end()){return false;}else{set.insert(sum);//新函數,將sum加入到set中}n = sum;}}
};

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

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

相關文章

【Python數據庫全棧指南】從SQL到ORM深度實踐

目錄 &#x1f31f; 前言&#x1f3d7;? 技術背景與價值&#x1fa79; 當前技術痛點&#x1f6e0;? 解決方案概述&#x1f465; 目標讀者說明 &#x1f9e0; 一、技術原理剖析&#x1f4ca; 核心概念圖解&#x1f4a1; 核心作用講解&#x1f527; 關鍵技術模塊說明?? 技術選…

Android磁盤占用優化全解析:從監控到治理的存儲效率革命

引言 隨著移動應用功能的復雜化&#xff0c;磁盤占用問題日益突出。據統計&#xff0c;國內頭部應用的平均安裝包大小已超100MB&#xff0c;運行時緩存、日志、圖片等數據更可能使磁盤占用突破GB級。過度的磁盤消耗不僅影響用戶設備空間&#xff0c;還可能觸發系統的“應用數據…

AJAX-讓數據活起來(一):入門

目錄 一、AJAX概念和axios使用 1.1 什么是AJAX ? 1.2 怎么用AJAX ? 1.3 axios使用 二、認識URL 2.1 什么是URL? 2.2 URL的組成 組成 協議 域名 資源路徑 獲取-新聞列表 三、URL查詢參數 URL查詢參數 axios - 查詢參數 四、常用請求方法和數據提交 常用請求…

【C++篇】list模擬實現

實現接口&#xff1a; list的無參構造、n個val構造、拷貝構造 operator重載 實現迭代器 push_back() push_front() erase() insert() 頭尾刪 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace liu {//定義list節點temp…

Go 語言范圍循環變量重用問題與 VSCode 調試解決方法

文章目錄 問題描述問題原因1. Go 1.21 及更早版本的范圍循環行為2. Go 1.22 的改進3. VSCode 調試中的問題4. 命令行 dlv debug 的正確輸出 三種解決方法1. 啟用 Go 模塊2. 優化 VSCode 調試配置3. 修改代碼以確保兼容性4. 清理緩存5. 驗證環境 驗證結果結論 在 Go 編程中&…

快速創建 Vue 3 項目

安裝 Node.js 和 Vue CL 安裝 Node.js&#xff1a;訪問 https://nodejs.org/ 下載并安裝 LTS 版本。 安裝完后&#xff0c;在終端檢查版本&#xff1a; node -v npm -v安裝 Vue CLI&#xff08;全局&#xff09;&#xff1a; npm install -g vue/cli創建 Vue 3 項目 vue cr…

java學習日志——Spring Security介紹

使用Spring Security要重寫UserDetailsService的loadUserByUsername方法&#xff08;相當于自定了認證邏輯&#xff09;

【C++進階篇】初識哈希

哈希表深度剖析&#xff1a;原理、沖突解決與C容器實戰 一. 哈希1.1 哈希概念1.2 哈希思想1.3 常見的哈希函數1.3.1 直接定址法1.3.2 除留余數法1.3.3 乘法散列法&#xff08;了解&#xff09;1.3.4 平方取中法&#xff08;了解&#xff09; 1.4 哈希沖突1.4.1 沖突原因1.4.2 解…

單機Kafka配置ssl并在springboot使用

目錄 SSL證書生成根證書生成服務端和客戶端證書生成keystore.jks和truststore.jks輔助腳本單獨生成truststore.jks 環境配置hosts文件kafka server.properties配置ssl 啟動kafkakafka基礎操作springboot集成準備工作需要配置的文件開始消費 SSL證書 證書主要包含兩大類&#x…

PCB設計教程【入門篇】——電路分析基礎-元件數據手冊

前言 本教程基于B站Expert電子實驗室的PCB設計教學的整理&#xff0c;為個人學習記錄&#xff0c;旨在幫助PCB設計新手入門。所有內容僅作學習交流使用&#xff0c;無任何商業目的。若涉及侵權&#xff0c;請隨時聯系&#xff0c;將會立即處理 目錄 前言 一、數據手冊的重要…

Vue2實現Office文檔(docx、xlsx、pdf)在線預覽

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…

【辰輝創聚生物】JAK-STAT信號通路相關蛋白:細胞信號傳導的核心樞紐

在細胞間復雜的信號傳遞網絡中&#xff0c;Janus 激酶 - 信號轉導和轉錄激活因子&#xff08;JAK-STAT&#xff09;信號通路猶如一條高速信息公路&#xff0c;承擔著傳遞細胞外信號、調控基因表達的重要使命。JAK-STAT 信號通路相關蛋白作為這條信息公路上的 “關鍵節點” 和 “…

OceanBase數據庫從入門到精通(運維監控篇)

文章目錄 一、OceanBase 運維監控體系概述二、OceanBase 系統表與元數據查詢2.1 元數據查詢基礎2.2 核心系統表詳解2.3 分區元數據查詢實戰三、OceanBase 性能監控SQL詳解3.1 關鍵性能指標監控3.2 SQL性能分析實戰四、OceanBase 空間使用監控4.1 表空間監控體系4.2 空間使用趨勢…

linux 進程間通信_共享內存

目錄 一、什么是共享內存&#xff1f; 二、共享內存的特點 優點 缺點 三、使用共享內存的基本函數 1、創建共享內存shmget() 2、掛接共享內存shmat 3、脫離掛接shmdt 4、共享內存控制shmctl 5.查看和刪除共享內存 comm.hpp server.cc Client.cc Makefile 一、什么…

Spring Boot 登錄實現:JWT 與 Session 全面對比與實戰講解

Spring Boot 登錄實現&#xff1a;JWT 與 Session 全面對比與實戰講解 2025.5.21-23:11今天在學習黑馬點評時突然發現用的是與蒼穹外賣jwt不一樣的登錄方式-Session&#xff0c;于是就想記錄一下這兩種方式有什么不同 在實際開發中&#xff0c;登錄認證是后端最基礎也是最重要…

Vue中的 VueComponent

VueComponent 組件的本質 Vue 組件是一個可復用的 Vue 實例。每個組件本質上就是通過 Vue.extend() 創建的構造函數&#xff0c;或者在 Vue 3 中是由函數式 API&#xff08;Composition API&#xff09;創建的。 // Vue 2 const MyComponent Vue.extend({template: <div…

使用 FFmpeg 將視頻轉換為高質量 GIF(保留原始尺寸和幀率)

在制作教程動圖、產品展示、前端 UI 演示等場景中,我們經常需要將視頻轉換為體積合適且清晰的 GIF 動圖。本文將詳細介紹如何使用 FFmpeg 工具將視頻轉為高質量 GIF,包括: ? 保留原視頻尺寸或自定義縮放? 保留原始幀率或自定義幀率? 使用調色板優化色彩質量? 降低體積同…

【自然語言處理與大模型】大模型Agent四大的組件

大模型Agent是基于大型語言模型構建的智能體&#xff0c;它們能夠模擬獨立思考過程&#xff0c;靈活調用各類工具&#xff0c;逐步達成預設目標。這類智能體的設計旨在通過感知、思考與行動三者的緊密結合來完成復雜任務。下面將從大模型大腦&#xff08;LLM&#xff09;、規劃…

《軟件工程》第 11 章 - 結構化軟件開發

結構化軟件開發是一種傳統且經典的軟件開發方法&#xff0c;它強調將軟件系統分解為多個獨立的模塊&#xff0c;通過數據流和控制流來描述系統的行為。本章將結合 Java 代碼示例、可視化圖表&#xff0c;深入講解面向數據流的分析與設計方法以及實時系統設計的相關內容。 11.1 …

初步嘗試AI應用開發平臺——Dify的本地部署和應用開發

隨著大語言模型LLM和相關應用的流行&#xff0c;在本地部署并構建知識庫&#xff0c;結合企業的行業經驗或個人的知識積累進行定制化開發&#xff0c;是LLM的一個重點發展方向&#xff0c;在此方向上也涌現出了眾多軟件框架和工具集&#xff0c;Dify就是其中廣受關注的一款&…