3-哈希表-21-兩個數組的交集-LeetCode349

3-哈希表-21-兩個數組的交集-LeetCode349

參考:代碼隨想錄

LeetCode: 題目序號349

更多內容歡迎關注我(持續更新中,歡迎Star?)

Github:CodeZeng1998/Java-Developer-Work-Note

技術公眾號:CodeZeng1998(純純技術文)

生活公眾號:好鍋(Life is more than code)

CSDN: CodeZeng1998

其他平臺:CodeZeng1998好鍋

349. 兩個數組的交集

給定兩個數組 nums1nums2 ,返回 它們的 交集

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

示例 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

解法一:使用 HashSet

    /*** 兩個數組的交集** @param nums1 第一個數組* @param nums2 第二個數組* @return 有相交,返回交集,無相交,返回空數組* @author CodeZeng1998*/public int[] intersection(int[] nums1, int[] nums2) {if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {return new int[0];}Set<Integer> set = new HashSet<>();Set<Integer> intersection = new HashSet<>();for (int i : nums1) {set.add(i);}for (int i : nums2) {if (set.contains(i)) {intersection.add(i);}}int[] resultArray = new int[intersection.size()];int j = 0;for (Integer i : intersection) {resultArray[j++] = i;}return resultArray;}

ChatGPT:

這段代碼定義了一個名為intersection的方法,接受兩個整數數組nums1nums2作為輸入,并返回一個包含兩個數組交集的整數數組。兩個數組的交集是兩個數組共有的元素集合。

以下是代碼的詳細解釋:

  1. 方法首先檢查輸入數組是否為null或為空。如果任何一個為null或為空,它將返回一個空數組 {}
  2. 初始化一個名為set的HashSet,用于存儲第一個數組nums1中的唯一元素。
  3. 另一個HashSet命名為intersection,用于存儲兩個數組中的公共元素。
  4. 第一個循環遍歷數組nums1中的每個元素,并將其添加到set中。
  5. 第二個循環遍歷數組nums2中的每個元素。對于每個元素,它檢查它是否存在于set中。如果存在,則將元素添加到intersection集合中。
  6. 在找到公共元素之后,使用intersection集合的大小初始化一個整數數組resultArray
  7. intersection集合中的元素復制到resultArray中。
  8. 最后,返回包含交集元素的resultArray

解法二:使用 Hash 數組

  • 注意題目的數組大小和數值范圍
    /*** 兩個數組的交集** @param nums1 第一個數組* @param nums2 第二個數組* @return 有相交,返回交集,無相交,返回空數組* @author CodeZeng1998*/public int[] intersection(int[] nums1, int[] nums2) {int[] hash1Array = new int[1001];int[] hash2Array = new int[1001];for (int i : nums1) {hash1Array[i]++;}for (int i : nums2) {hash2Array[i]++;}List<Integer> resultList = new ArrayList<>();for (int i = 0; i < 1001; i++) {if (hash1Array[i] > 0 && hash2Array[i] > 0) {resultList.add(i);}}int[] resArray = new int[resultList.size()];int index = 0;for (Integer value : resultList) {resArray[index++] = value;}return resArray;}

ChatGPT:

這段代碼定義了一個名為intersection的方法,接受兩個整數數組nums1nums2作為輸入,并返回一個包含兩個數組之間交集元素的數組。

以下是代碼的詳細解釋:

  1. int[] hash1Array = new int[1001];int[] hash2Array = new int[1001];: 這些代碼初始化了兩個大小為1001的整數數組hash1Arrayhash2Array。這些數組用于分別統計nums1nums2中數字的出現次數。
  2. 第一個循環遍歷了nums1的元素。對于每個元素i,它在hash1Array中將i的計數遞增。
  3. 類似地,第二個循環遍歷了nums2的元素,并遞增hash2Array中每個元素的計數。
  4. 處理了兩個數組之后,代碼從0到1000遍歷每個索引。對于每個索引i,如果hash1Arrayhash2Arrayi的計數都大于0,則意味著i同時存在于兩個數組中,因此將i添加到名為resultList的列表中。
  5. 在找到所有共同元素后,代碼使用resultList創建一個新的整數數組resArray
  6. 最后,它遍歷resultList并填充resArray,然后返回resArray

349. Intersection of Two Arrays

Given two integer arrays nums1 and nums2, return an array of their

intersection

. Each element in the result must be unique and you may return the result in any order.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.

Constraints:

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

更多內容歡迎關注我(持續更新中,歡迎Star?)

Github:CodeZeng1998/Java-Developer-Work-Note

技術公眾號:CodeZeng1998(純純技術文)

生活公眾號:好鍋(Life is more than code)

CSDN: CodeZeng1998

其他平臺:CodeZeng1998好鍋

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

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

相關文章

2.1 OpenCV隨手簡記(二)

為后續項目學習做準備&#xff0c;我們需要了解LinuxOpenCV、Mediapipe、ROS、QT等知識。 一、圖像顯示與保存 1、基本原理 1.1 圖像像素存儲形式 首先得了解下圖像在計算機中存儲形式&#xff1a;(為了方便畫圖&#xff0c;每列像素值都寫一樣了)。對于只有黑白顏色的灰度…

[有監督學習]2.詳細圖解正則化

正則化 正則化是防止過擬合的一種方法&#xff0c;與線性回歸等算法配合使用。通過向損失函數增加懲罰項的方式對模型施加制約&#xff0c;有望提高模型的泛化能力。 概述 正則化是防止過擬合的方法&#xff0c;用于機器學習模型的訓練階段。過擬合是模型在驗證數據上產生的誤…

Java文件IO

White graces&#xff1a;個人主頁 &#x1f649;專欄推薦:Java入門知識&#x1f649; &#x1f649; 內容推薦:JUC常見類&#x1f649; &#x1f439;今日詩詞:東風吹柳日初長&#xff0c;雨馀芳草斜陽&#x1f439; ??點贊 ??收藏??關注&#x1f4ac;卑微小博主&…

Three.js 研究:4、創建設備底部旋轉的科技感圓環

1、實現效果 2、PNG轉SVG 2.1、原始物料 使用網站工具https://convertio.co/zh/png-svg/進行PNG轉SVG 3、導入SVG至Blender 4、制作旋轉動畫 4.1、給圓環著色 4.2、修改圓環中心位置 4.3、讓圓環旋轉起來 參考一下文章 Three.js 研究&#xff1a;1、如何讓物體動起來 Thre…

LeetCode # 1070. 產品銷售分析 III

1070. 產品銷售分析 III 題目 銷售表 Sales&#xff1a; ------------------ | Column Name | Type | ------------------ | sale_id | int | | product_id | int | | year | int | | quantity | int | | price | int | ------------------ (sale_id, year) 是這張表的主鍵&am…

“論SOA在企業集成架構設計中的應用”必過模板,突擊2024軟考高項論文

考題部分 企業應用集成(Enterprise Application Integration, EAI)是每個企業都必須要面對的實際問題。面向服務的企業應用集成是一種基于面向服務體系結構(Service-OrientedArchitecture,SOA&#xff09;的新型企業應用集成技術&#xff0c;強調將企業和組織內部的資源和業務功…

VSCode界面Outline只顯示類名和函數名,隱藏變量名

參考鏈接 https://blog.csdn.net/Zjhao666/article/details/120523879https://blog.csdn.net/Williamcsj/article/details/122401996 VSCode中界面左下角的Outline能夠方便快速跳轉到文件的某個類或函數&#xff0c;但默認同時顯示變量&#xff0c;導致找某個函數時很不方便。…

mimkatz獲取windows10明文密碼

目錄 mimkatz獲取windows10明文密碼原理 lsass.exe進程的作用 mimikatz的工作機制 Windows 10的特殊情況 實驗 實驗環境 實驗工具 實驗步驟 首先根據版本選擇相應的mimikatz 使用管理員身份運行cmd 修改注冊表 ?編輯 重啟 重啟電腦后打開mimikatz 在cmd切換到mi…

Seq2Seq模型:詳述其發展歷程、深遠影響與結構深度剖析

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一種深度學習架構&#xff0c;專為處理從一個輸入序列到一個輸出序列的映射任務設計。這種模型最初應用于機器翻譯任務&#xff0c;但因其靈活性和有效性&#xff0c;現已被廣泛應用于自然語言處理&#xff08;NLP&a…

醫院該如何應對網絡安全?

在線醫生咨詢受到很多人的關注&#xff0c;互聯網醫療行業的未來發展空間巨大&#xff0c;但隨著醫院信息化建設高速發展 醫院積累了大量的患者基本信息、化驗結果、電子處方、生產數據和運營信息等數據 這些數據涉及公民隱私、醫院運作和發展等多因素&#xff0c;醫療行業辦…

【QEMU中文文檔】1.關于QEMU

本文由 AI 翻譯&#xff08;ChatGPT-4&#xff09;完成&#xff0c;并由作者進行人工校對。如有任何問題或建議&#xff0c;歡迎聯系我。聯系方式&#xff1a;jelin-shoutlook.com。 QEMU 是一款通用的開源機器仿真器和虛擬化器。 QEMU 可以通過幾種不同的方式使用。最常見的用…

OrangePi AIpro--新手上路

目錄 一、SSH登錄二、安裝VNC Sevice&#xff08;經測試Xrdp遠程桌面安裝不上&#xff09;2.1安裝xface桌面2.2 配置vnc服務2.2.1 設置vnc server6-8位的密碼2.2.2 創建vnc文件夾&#xff0c;寫入xstartup文件2.2.3 給xstartup文件提高權限2.2.4 在安裝產生的vnc文件夾創建xsta…

C# 工廠模式學習

工廠模式&#xff08;Factory Pattern&#xff09;是一種創建型設計模式&#xff0c;它提供了一種創建對象的接口&#xff0c;而不是通過具體類來實例化對象。工廠模式可以將對象的創建過程封裝起來&#xff0c;使代碼更具有靈活性和可擴展性。 工廠模式有幾種常見的實現方式&…

Go 如何通過 Kafka 客戶端庫 生產與消費消息

文章目錄 0.前置說明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go選擇建議 1.啟動 kafka 集群2.安裝 confluent-kafka-go 庫3.創建生產者特殊文件說明如何查看.log文件內容 4.創建消費者 0.前置說明 Go 語言中有一些流行的 Kafka 客戶端庫。以下是幾個常用…

【Uniapp小程序】自定義導航欄uni-nav-bar滾動漸變色

效果圖 新建activityScrollTop.js作為mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景顏色為完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字顏色};},onPageScroll(e) {// 設置背景const newAlpha Math.min((e.s…

踩坑:6年后為何不用GraphQL了?

GraphQL 是一項令人難以置信的技術&#xff0c;自從我在 2018 年首次開始將其投入生產以來&#xff0c;它就吸引了很多人的注意力。 在一大堆無類型的 JSON REST API 上構建了許多 React SPA 之后&#xff0c;我發現 GraphQL 是一股清新的空氣。 然而&#xff0c;隨著時間的推…

mybatis用map接收返回對象,不想讓數據類型為tinyint自動轉換為boolean,如何處理

在 MyBatis 中&#xff0c;當使用 Map 來接收查詢結果時&#xff0c;MyBatis 會根據列的數據類型自動選擇合適的 Java 類型來映射這些值。默認情況下&#xff0c;如果數據庫列是 TINYINT(1)&#xff0c;MyBatis 可能會錯誤地將其映射為 boolean&#xff0c;因為它經常被誤解為只…

PPP認證兩種:PAP和CHAP,兩次握手和三次握手

CHAP&#xff08;Challenge-Handshake Authentication Protocol&#xff0c;質詢握手認證協議&#xff09;的設計理念是增強網絡認證過程的安全性。在CHAP的三次握手過程中&#xff0c;不直接傳送用戶的明文密碼&#xff0c;以此來提高安全性&#xff0c;具體步驟如下&#xff…

開源大模型源代碼

開源大模型的源代碼可以在多個平臺上找到&#xff0c;以下是一些知名的開源大模型及其源代碼的獲取方式&#xff1a; 1. **艾倫人工智能研究所的開放大語言模型&#xff08;Open Language Model&#xff0c;OLMo&#xff09;**&#xff1a; - 提供了完整的模型權重、訓練代…

springboot結合mybatis使用多數據源的方式

背景 最近有一個需求&#xff0c;有兩個庫需要做同步數據&#xff0c;一個Doris庫&#xff0c;一個mysql庫&#xff0c;兩邊的表結構一致&#xff0c;這里不能使用navicat等工具提供的數據傳輸之類的功能&#xff0c;只能使用代碼做同步&#xff0c;springboot配置多數據…