【Leetcode 每日一題】349. 兩個數組的交集

給定兩個數組?nums1?和?nums2?,返回?它們的?

交集

?。輸出結果中的每個元素一定是?唯一?的。我們可以?不考慮輸出結果的順序?。

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[9,4]
解釋:[4,9] 也是可通過的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

思路:

  1. 使用?unordered_set(哈希集合)來存儲?nums1?中的元素,利用哈希集合的去重特性。
  2. 遍歷?nums2?中的每個元素。
  3. 對于?nums2?中的每個元素,檢查它是否存在于?nums1?的哈希集合中。
  4. 如果存在,將該元素插入到結果?unordered_set?中,同樣利用哈希集合的去重特性。
  5. 將結果?unordered_set?轉換為?vector?并返回。
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result;unordered_set<int> nums0(nums1.begin(), nums1.end());for (int i=0;i<nums2.size();i++) {if (nums0.find(nums2[i]) != nums0.end()) {result.insert(nums2[i]);}}return vector<int>(result.begin(), result.end());}
};

算法利用了哈希集合的高效查找和插入特性(平均時間復雜度為 O(1)),通過一次遍歷確定交集,保證了結果的唯一性,使得整體時間復雜度為 O(n+m),其中 n 和 m 分別是兩個數組的長度。

方法二:使用哈希表來解決(只適用于給定數組范圍不大的情況)
?

  1. 初始化數據結構:定義一個 unordered_set 類型的結果集合 result_set 用于存儲最終的交集結果,以及一個大小為 1005 的整型數組 hash 用作計數器,數組的每個元素初始值設為 0。

  2. 記錄 nums1 中的元素:遍歷數組 nums1,使用 hash 數組來記錄 nums1 中每個元素的出現次數。由于題目給定數組元素的范圍是 0 到 1000,所以 hash 數組的大小設置為 1005(1000 + 1 + 1,考慮到數組索引從 0 開始)。

  3. 查找交集:遍歷數組 nums2,對于 nums2 中的每個元素,檢查它在 hash 數組中的對應位置是否為 1。如果是,說明該元素也在 nums1 中出現過,即屬于兩個數組的交集,將其插入到 result_set 中。

  4. 轉換結果:將 result_set 轉換為 vector<int> 類型并返回,這樣就得到了最終的交集結果數組。

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result;int hash[1005] = {0};for (int num : nums1) {hash[num] = 1;}for (int num : nums2) { if (hash[num] == 1) {result.insert(num);}}return vector<int>(result.begin(), result.end());}
};

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

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

相關文章

[web]-代碼審計-運維失誤

打開頁面可以看到如下&#xff1a; 1、查看源代碼&#xff0c;發現驗證碼功能是正常生成的隨機的&#xff0c;輸入也沒有過濾&#xff0c;無法采用爆破。 2、根據題目提示運維失誤&#xff0c;使用dirsearch掃描&#xff0c;發現提交的地址check.php, 使用php5、.bak可以打開&…

2.The DispatcherServlet

The DispatcherServlet Spring的Web MVC框架與許多其他Web MVC框架一樣&#xff0c;是請求驅動的&#xff0c;圍繞一個中央Servlet&#xff08;即DispatcherServlet&#xff09;設計&#xff0c;該Servlet將請求分派給控制器&#xff0c;并提供其他功能以促進Web應用程序的開發…

創建I/O文件fopen

#include〈stdio.h〉 int mian(int argc,char *argv[]){ FILE *fp;//結構體fp fpfopen&#xff08;“1.txt”&#xff0c;“r”&#xff09;; }

程序的控制結構——if-else語句(雙分支結構)【互三互三】

目錄 &#x1f341; 引言 &#x1f341;if-else語句&#xff08;雙分支結構&#xff09; &#x1f449;格式1&#xff1a; &#x1f449;功能&#xff1a; &#x1f449;程序設計風格提示&#xff1a; &#x1f449;例題 &#x1f449;格式2&#xff1a; &#x1f449;…

Monaco 使用 ColorProvider

Manco 中可以使用調色板對色值進行修改&#xff0c;首先看一下調色版效果。 調色板是 Monaco-Editor 中一個特別的組件&#xff0c;通過兩個方法實現呼出調色板&#xff0c;provideColorPresentations 顯示調色窗口&#xff0c;provideDocumentColors 監聽頁面的變更&#xff0…

如何將libwebsockets庫編譯為x86架構

在之前的文章中&#xff0c;我們已經詳細介紹了如何交叉編譯libwebsockets并將其部署到ELF 1開發板上。然而在調試階段&#xff0c;發現將libwebsockets在Ubuntu環境下編譯為x86架構可能更為方便和高效。 通過在主機環境中編譯運用x86架構下的libwebsockets庫&#xff0c;可以…

阿里ChatSDK使用,開箱即用聊天框

介紹&#xff1a; 效果&#xff1a;智能助理 ChatSDK&#xff0c;是在ChatUI的基礎上&#xff0c;結合阿里云智能客服的最佳實踐&#xff0c;沉淀和總結出來的一個開箱即用的&#xff0c;可快速搭建智能對話機器人的框架。它簡單易上手&#xff0c;通過簡單的配置就能搭建出對…

Flowable工作流引擎核心事件詳細解釋說明

Flowable工作流引擎核心事件詳細解釋說明 流程執行事件 需要了解全部詳細事件的請看這個鏈接Flowable&#xff08;一個開源的工作流和業務流程管理引擎&#xff09;中與事件相關的一些核心概念 流程開始和結束事件 PROCESS_STARTED&#xff1a;標記流程實例的開始。PROCESS…

公益快報 | 中科億海微以企業獎學金為紐帶,深化校企合作

近日&#xff0c;為回報母校、激勵湖南大學機器人視覺感知與控制技術國家工程研究中心廣大學生&#xff0c;中科億海微電子科技&#xff08;蘇州&#xff09;有限公司&#xff08;簡稱“中科億海微”&#xff09;捐贈設立企業獎學金。此項獎學金的設立標志著校企合作邁向全方位…

【C++】C++中struct結構體和class類的區別

在C中&#xff0c; struct 和 class 在很多方面都非常相似&#xff0c;它們都可以包含數據成員&#xff08;變量&#xff09;和成員函數&#xff08;方法&#xff09;。然而&#xff0c;它們之間還是存在一些關鍵的區別&#xff1a; 1. 默認訪問權限 struct 的成員默認是 pub…

實現組件存儲 WinSxS 文件夾解析

目錄 背景 目錄名的組成 解析目錄結構 更新&總結 文章出處鏈接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/140385969]. 背景 WinSxS 文件夾位于 Windows 文件夾中&#xff0c;例如 C: \Windows\WinSxS。它是 Windows 組件存儲文件的位置。 Wind…

深入理解Spring Boot中的日志框架選擇

深入理解Spring Boot中的日志框架選擇 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 背景與需求 在開發和運維中&#xff0c;日志是不可或缺的重要組成部分。Spring Boot作為一個流行的Java開…

idea啟動vue項目一直卡死在51%,問題分析及其如何解決

如果你的項目也一直卡在百分之幾十&#xff0c;你可以參考下面的方法&#xff0c;試一試能否解決 問題描述&#xff1a; 通過在idea終端中輸入命令 npm run serve 啟動vue項目&#xff0c;啟動進程一直卡在51% 如何解決&#xff1a; 檢查 < template > 標簽中的html內容…

深度學習中的超參管理方法:argparse模塊

在深度學習方法中我們不可避免地會遇到大量超參數如&#xff08;batch_size、learning_rate等&#xff09;。不同的超參數組合可以得到不同的訓練/測試結果。所以在訓練和測試過程中我們需要不斷調整超參數獲得理想的結果&#xff08;煉丹&#xff09;&#xff0c;如果每一次去…

破解世紀難題:顛覆性方案解鎖世界十大未解之謎

前言 在科學的浩瀚宇宙中&#xff0c;始終存在一些引人入勝的謎題&#xff0c;它們挑戰著人類智慧的極限。這些謎題不僅涵蓋了數學、物理、天文學和生物學等領域&#xff0c;還觸及到意識和宇宙的本質。破解這些世紀難題&#xff0c;不僅意味著人類知識的巨大飛躍&#xff0c;…

【Windows】硬鏈接和軟鏈接(OneDrive同步指定目錄?)

文章目錄 一、場景帶入二、Windows下的硬鏈接和軟鏈接2.1 硬鏈接&#xff08;Hard Link&#xff09;2.2 軟鏈接&#xff08;符號鏈接&#xff0c;Symbolic Link&#xff09;2.3 軟鏈接和快捷方式2.4 應用場景 三、OneDrive中的應用3.1 錯誤姿勢3.2 好像可行的嘗試3.3 合理的解決…

智能貓砂盆兩種類型怎么選?深度剖析熱門前三的品牌!

應該也有很多鏟屎官像我一樣&#xff0c;第一個入手的通常都是封閉式的智能貓砂盆&#xff0c;自動清潔是很好用&#xff0c;但問題也隨之而來。有時候滾筒式的智能貓砂盆會在清潔過程中將砂團摔碎&#xff0c;導致糞便暴露出來產生臭味&#xff0c;這樣我們回來不得不又再次進…

LangChain —— Prompt Templates

文章目錄 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates 一、什么是 Prompt Templates 提示模板有助于將用戶輸入和參數轉換為語言模型的指令。這可用于指導模型的響應&#x…

LangChain框架詳解

LangChain框架詳解 LangChain是一個基于語言模型開發應用程序的強大框架&#xff0c;旨在幫助開發人員簡化與大模型交互、數據檢索以及將不同功能模塊串聯起來以完成復雜任務的過程。它提供了一套豐富的工具、組件和接口&#xff0c;使開發人員能夠輕松構建上下文感知和具備邏…

基于stm32+小程序開發智能家居門禁系統-硬件-軟件實現

視頻演示&#xff1a; 基于stm32智能家居門禁系統小程序開發項目 視頻還有添加刪除卡號&#xff0c;添加刪除指紋&#xff0c;關閉繼電器電源等沒有演示。 代碼Git&#xff1a; https://github.com/Abear6666/stm32lock 總體功能&#xff1a; 本門禁系統主要解鎖功能分別為卡…