Leetcode刷題100天—350. 兩個數組的交集 II(哈希表)—day12

      網友投稿 796 2025-04-01

      前言:

      大家好,我叫運智

      給定兩個數組,編寫一個函數來計算它們的交集。

      示例 1:

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

      示例 2:

      輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[4,9]

      說明:

      輸出結果中每個元素出現的次數,應與元素在兩個數組中出現次數的最小值一致。

      我們可以不考慮輸出結果的順序。

      Leetcode刷題100天—350. 兩個數組的交集 II(哈希表)—day12

      進階:

      如果給定的數組已經排好序呢?你將如何優化你的算法?

      如果 nums1 的大小比 nums2 小很多,哪種方法更優?

      如果 nums2 的元素存儲在磁盤上,內存是有限的,并且你不能一次加載所有的元素到內存中,你該怎么辦?

      來源:力扣(leetcode

      鏈接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii

      著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

      package 哈希表; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.swing.SpringLayout.Constraints; public class _350_兩個數組的交集II { public static int[] intersect(int[] nums1, int[] nums2) { if (nums1.length > nums2.length) { return intersect(nums2, nums1); } Map map = new HashMap(); // 通過for循環將獲取到的數據存入到哈希表中,如果出現重復的數據就+1 for (int num : nums1) { System.out.print(num); int count = map.getOrDefault(num, 0) + 1; map.put(num, map.getOrDefault(num, 0)+1); } // 定義存放返回的數組 int[] intersection = new int[nums1.length]; System.out.print(map); int index = 0; for (int num : nums2) { // 獲取對應鍵的值 int count = map.getOrDefault(num, 0); // 如果鍵值大于0就存入數組中 if (count > 0) { System.out.println(count); intersection[index++] = num; count--; System.out.print(num); // 重新更新哈希 if (count > 0) { map.put(num, count); } else {//否則就移除 map.remove(num); System.out.println(map); } } } // array=Arrays.copyOfRange(oringinal,int from, int to) 此時要注意下標的變化, //array拷貝original數組從from下標開始,一直到to下標結束,注意包含from下標,不包含to下標,是左閉右開區間。 System.out.println(index); // 提取0~index的數組長度就可以了,因為后面沒有值了 return Arrays.copyOfRange(intersection, 0, index); } public static void main(String args[]) { int nums1[]=new int[3]; int nums2[]=new int[5]; nums1[0]=4; nums1[1]=9; nums1[2]=5; nums2[0]=9; nums2[1]=4; nums2[2]=9; nums2[3]=8; nums2[4]=4; // System.out.print(nums1); int[] c=intersect(nums1, nums2); for(int num:c) { System.out.print(num); } } }

      本人csdn博客:https://blog.csdn.net/weixin_46654114

      轉載說明:跟我說明,務必注明來源,附帶本人博客連接。

      數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word合并表格怎么合并
      下一篇:怎樣讓PPT全程有背景音樂(怎樣弄ppt的背景音樂)
      相關文章
      久久精品国产亚洲av高清漫画| 91亚洲一区二区在线观看不卡| 亚洲免费视频网址| 日本红怡院亚洲红怡院最新| 亚洲人成网站色在线入口| 亚洲成a人在线看天堂无码| 国产精品亚洲一区二区在线观看| 亚洲精品伦理熟女国产一区二区| 国产AV旡码专区亚洲AV苍井空| 国产成人亚洲精品| 97久久国产亚洲精品超碰热| 中中文字幕亚洲无线码| 456亚洲人成在线播放网站| 国产成+人+综合+亚洲专| 亚洲 日韩 色 图网站| 一本色道久久88—综合亚洲精品 | 国产亚洲人成A在线V网站| 亚洲欧洲精品成人久久奇米网| 亚洲AV蜜桃永久无码精品| 亚洲国产精品一区二区三区久久| 亚洲高清免费视频| 国产成人综合亚洲亚洲国产第一页| 亚洲一区无码中文字幕| 亚洲成a人片在线观看日本| 亚洲国产成人私人影院| 亚洲欧洲春色校园另类小说| 亚洲不卡在线观看| 亚洲码欧美码一区二区三区| 色噜噜噜噜亚洲第一| 亚洲欧洲自拍拍偷精品 美利坚| 国产亚洲情侣一区二区无| 久久精品国产亚洲香蕉| 久久99亚洲网美利坚合众国| 亚洲国产精品一区二区久| 亚洲熟女综合色一区二区三区| 精品国产日韩亚洲一区91| 亚洲精品国产精品乱码不卡| 国产亚洲精品美女久久久| 内射干少妇亚洲69XXX| 亚洲va乱码一区二区三区| 亚洲av中文无码字幕色不卡|