求兩個集合的交集

letcode原題

?排序+雙指針

  • 如果兩個數組是有序的,則可以使用雙指針的方法得到兩個數組的交集。
  • 首先對兩個數組進行排序,然后使用兩個指針遍歷兩個數組。
  • 初始時,兩個指針分別指向兩個數組的頭部。每次比較兩個指針指向的兩個數組中的數字,如果兩個數字不相等,則將指向較小數字的指針右移一位,如果兩個數字相等,將該數字添加到答案,并將兩個指針都右移一位。當至少有一個指針超出數組范圍時,遍歷結束。

std::vector<int>intersect(std::vector<int>&num1,std::vector<int>&num2){std::sort(num1.begin(),num1.end());std::sort(num2.begin(),num2.end());int left = 0;int right = 0;std::vector<int>ans;while (left < num1.size() && right < num2.size()){if (num1[left]==num2[right]){ans.push_back(num1[left]);left++;right++;}if (num1[left]<num2[right]){left++;}if (num1[left]>num2[right]){right++;}}return ans;
}

哈希表

  • 推薦使用哈希表的方式?
vector<int> intersect(vector<int>& nums1, vector<int>& nums2){if (nums2.size()<nums1.size()){return intersect(nums2,nums1);}std::unordered_map<int,int>map{};for (auto temp : nums1) {++map[temp];}std::vector<int>intersection;for (auto temp:nums2) {if (map.find(temp)!=map.end()){intersection.push_back(temp);map[temp]--;if (map[temp]<=0){map.erase(temp);}}}return intersection;
}

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

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

相關文章

Python學習7 集合Set

區別 集合的基本使用 如果是空集合&#xff0c;使用set {}是字典 pop:無序&#xff0c;隨機刪除一個元素 add添加一個元素 remove移除指定元素 update合并&#xff0c;合并在原集合上 union合并到一個新的集合上 clear清空 總結&#xff1a; 集合運算 補集&#xff1a; f…

cad怎么快速算面積_用cad算面積的快捷鍵方法步驟詳細,大朗CAD培訓班

在繪圖的過程中經常需要查詢和計算圖形的面積&#xff0c;網上有不少人問這方面的問題。都市領航教育將計算面積的方法和相關命令整理一下&#xff0c;希望對初學者有幫助。 查詢圖形的面積 我們利用邊界或編輯多段線命令生成了多段線和面域&#xff0c;不需要再使用查詢面積命…

給定沒有重復數字的序列,將其全排列

leetcode題目 void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){if (firstlen){res.push_back(output);}for (int i first; i < len; i) {std::swap(output[first],output[i]);backtrack(res,output,first1,…

Java web后端4 會話 Cookie Session

會話 會話&#xff1a;指的是一個客戶端&#xff08;瀏覽器&#xff09;與Web服務器之間連續發生的一系列請求和響應的過程。 客戶端和服務器的請求和響應的過程&#xff08;對話雙方只要有一方發生變化&#xff0c;都屬于不同的會話&#xff09; 超時間隔【距離上一次請求的…

將安全信息應用到以下對象時發生錯誤 拒絕訪問_手機資訊:拒絕「京東金融」事件再次發生|如何避免iPhone 應用私自獲取照片...

如今使用IT數碼設備的小伙伴們是越來越多了&#xff0c;那么IT數碼設備當中是有很多知識的&#xff0c;這些知識很多小伙伴一般都是不知道的&#xff0c;就好比最近就有很多小伙伴們想要知道拒絕「京東金融」事件再次發生|如何避免iPhone 應用私自獲取照片&#xff0c;那么既然…

走臺階一共有多少種走法

可以走1臺階 2臺階 3臺階 long long MoveStairs(int total){if (total < 4) {return total 3 ? 4 : total;}int a 1, b 2, c 4;for (int i 4; i < total; i) {int temp (a b) % 1000000007 c;a b;b c;c temp % 1000000007;}return c; }

C/C++藍橋杯1 備賽準備

藍橋杯信息 算法基礎學習 1.學習C基礎語法 2. 3.做藍橋杯的真題 賽題&#xff1a;情況 賽題&#xff1a;國賽 賽題&#xff1a;暴力數學練習 暴力的題目類型

手機qq表白代碼大全可復制_街機游戲大全~手機版

街機游戲大全~手機版安卓&#xff1a;街機游戲大全~手機版1、街機游戲2、經典游戲游戲介紹安卓手機街機游戲1500合集&#xff0c;街機模擬器街機游戲可以說是一代80、90后的童年回憶&#xff0c;此合集收錄1500多款街機經典游戲&#xff0c;僅限安卓系統&#xff0c;這么多游戲…

C++面試 語言基礎

指針和引用之間的區別 指針是一個新的變量&#xff0c;指向一個變量的地址。可以通過這個地址來修改另一個變量&#xff1b;引用是變量的別名&#xff0c;對引用的操作就是對變量本身的操作。int a 996; int *p &a;//p是指針&#xff0c;&在此是求地址運算 int &…

中科大 計算機網絡13 FTP文件傳輸協議

FTP FTP&#xff1a;文件傳輸協議 早期分享文件采用FTP方式 客戶端&#xff1a;下載文件 服務器&#xff1a;上傳文件 FTP:控制連接 先建立控制連接【調用一系列Socket API】&#xff0c;服務器守候在21端口;進行身份認證【用戶名和口令&#xff0c;明文傳輸】&#xff1b;…

ulead gif animator_搞笑GIF趣圖:這風看來很大啊,今天回不來家了7

原標題&#xff1a;搞笑GIF趣圖&#xff1a;這風看來很大啊&#xff0c;今天回不來家了7每天更新搞笑GIF趣圖&#xff0c;歡迎關注。這風看來很大啊&#xff0c;今天回不來家了&#xff0c;哈哈狗生最痛苦的事一 灘 貓過個生日 又少了個朋友找到單身的理由了這咋還往回炸爆笑GI…

圖像放大 問題 即 二維數組放大

參考鏈接 參考鏈接 #include <iostream> #include <vector>int N0,K0;int main(){std::cin>>N>>K;std::vector<std::vector<int>>input(N,std::vector<int>(N, 0)); // std::cout << N << " " << K…

pictureselector 圖片路徑_AI圖片無損放大軟件

?不知道大家有沒有使用過下面的AI智能圖片放大網站&#xff0c;他的圖片放大效果整體尚可&#xff0c;但是在高倍放大需要收費&#xff0c;且對圖片尺寸和文件大小有一定的限制&#xff0c;今天給大家推薦一款Topaz Labs公司開發的圖片無損放大軟件(免費使用的哦)。軟件介紹這…

中科大 計算機網絡14 EMail SMTP簡單郵件傳輸協議 POP3郵件傳輸協議 IMAP消息訪問協議 HTTP超文本傳輸協議

EMail&#xff1a;電子郵件 協議包括發送和拉取的協議 發送的協議&#xff1a;SMTP簡單郵件傳輸協議 拉取的協議&#xff1a;POP3郵件傳輸協議,IMAP消息訪問協議,HTTP超文本傳輸協議 HTTP超文本傳輸協議&#xff1a; 可以上載POST和下載GET文件; 用戶代理&#xff1a;撰寫發…

人工智能工程師需具備的技能_2020年軟件測試工程師需要具備的技能--需要學什么--面試題有哪些(靈魂拷問)...

一、2020年軟件測試行業的現狀2020年開年&#xff0c;一不小心&#xff0c;【新冠】黑天鵝從頭上飄過&#xff0c;持續影響全國乃至全球的經濟&#xff0c;軟件行業公司也迎來了不少的沖擊&#xff0c;那么一直打算入行軟件測試行業&#xff0c;或者已經在軟件測試行業耕耘多年…

C++ 標準庫 書籍學習記錄筆記 第5章

5.3 迭代器 前置式遞增比后置式遞增效率更高&#xff0c;因為后者需要一個額外的臨時對象&#xff0c;因為他需要存儲一個迭代器原本的位置并將其進行返還&#xff0c;因此最好使用pos&#xff0c;而不是pos&#xff1b; 5.3.1 關聯式容器的運用實例 修改map默認的遞增的方式…

中科大 計算機網絡15 DNS域名解析系統

DNS的必要性 DNS域名解析系統&#xff1a;不是直接給人使用的&#xff0c;而是給其他應用使用的 域名到IP地址的轉換【使用&#xff1a;web應用&#xff0c;FTP應用。。。】 在應用層跑的基礎設施&#xff0c;為其他應用而使用 網絡層的工作的設備使用IP地址&#xff0c;用來…

面試題目匯總

1&#xff0c;for循環的時間復雜度 兩層for循環 第二層中 的循環變量繼承與上層變量時間復雜度是O(n^2)for循環時間復雜度算法理解_bingkxin的專欄-CSDN博客_for循環時間復雜度 for(int i0;i<N;i) {for(int ji;j<N;j){//此處運行次數:NN-1N-2...1123...NN(N1)/2} } for(…

C++基礎1 數據類型 常量

使用Dev CPP作為編程環境、 注意dev cpp5.4.0沒有格式化代碼功能&#xff0c;不要再設置了 設置的常用快捷鍵 CtrE:多行注釋 CtrlShiftE:取消多行注釋 CtrlZ&#xff1a;撤銷 CtrlShiftZ:取消撤銷 CtrlL:折疊函數 CtrlShifL:取消折疊函數 設置Dev Cpp Dev C初始化&#xf…

amd核芯顯卡控制面板自定義分辨率_顯卡天梯圖2020最新版 2020年5月顯卡排行榜天梯圖...

轉眼五月份就到來了&#xff0c;最近各大廠商可謂是你方唱罷我登場啊&#xff0c;發布會一場接著一場&#xff0c;新品和概念產品等一個接著一個的放出&#xff0c;我相信很多小伙伴們都迫不及待了&#xff01;~下面和小編一起來看看吧。2020年5月顯卡排行榜天梯圖&#xff1a;…