【C++LeetCode】【熱題100】三數之和【中等】-不同效率的題解【6】

題目:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
暴力方法:
在這里插入圖片描述

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;std::unordered_set<std::string> uniqueValues;//保證結果唯一for(int i=0;i<nums.size();i++){//三個值暴力求解for(int j=0;j<nums.size();j++){for(int k=0;k<nums.size();k++){if(i!=j && i!=k && j!=k && nums[i]+nums[j]+nums[k]==0){vector<int> temp;temp.push_back(nums[i]);temp.push_back(nums[j]);temp.push_back(nums[k]);sort(temp.begin(),temp.end());//排序ostringstream oss;oss<<temp[0]<<temp[1]<<temp[2];std::string temposs=oss.str();//cout<<oss.str()<<endl;// for(const auto & elem:uniqueValues){//     cout<<"---"<<elem<<endl;// }if(uniqueValues.find(temposs)!=uniqueValues.end()){//結果去重//cout<<temposs<<endl;}else{uniqueValues.insert(temposs);res.push_back(temp);}}}}}return res;}
};

優化方法1:

在這里插入圖片描述

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;std::unordered_set<std::string> uniqueValues;//保證結果唯一std::unordered_map<std::string,vector<int>>uniqueKVs;for(int i=0;i<nums.size();i++){//優化下,選擇二個for(int j=i+1;j<nums.size();j++){vector<int> temp;temp.push_back(nums[i]);temp.push_back(nums[j]);temp.push_back(0-(nums[i]+nums[j]));sort(temp.begin(),temp.end());//排序ostringstream oss;oss<<i<<","<<j;uniqueKVs[oss.str()]=temp;}}for(const auto & elem :uniqueKVs){//查找符合條件的std::string k=elem.first;size_t pos=k.find(",");int i=std::stoi(k.substr(0,pos));int j=std::stoi(k.substr(pos+1,k.size()-pos-1));        vector<int> temp=elem.second;for(int k=0;k<nums.size();k++){if(i!=j && i!=k && j!=k && nums[i]+nums[j]+nums[k]==0){ostringstream oss;oss<<temp[0]<<temp[1]<<temp[2];std::string temposs=oss.str();cout<<oss.str()<<endl;if(uniqueValues.find(temposs)!=uniqueValues.end()){//結果去重//cout<<temposs<<endl;}else{uniqueValues.insert(temposs);res.push_back(temp);}}}}return res;}
};

優化方法2:

在這里插入圖片描述
在這里插入圖片描述

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;sort(nums.begin(),nums.end());//排序 方便 去重 和查找for(int i=0;i<nums.size();i++){//優化下,選擇二個if(i==0 || nums[i] != nums[i-1]){//去除 越界 和重復的值int k=nums.size()-1;//雙指針 左右 逼近  使得并行查找for(int j=i+1;j<nums.size();j++){if(j==i+1 || nums[j]!=nums[j-1]){//去除 越界 和重復的值while(j<k && nums[i]+nums[j]+nums[k]>0){k--;//并行查找合適的 k對應的值}if(j==k){break;// 左邊和右邊 通過雙指針都 查找了,不能再存在符合條件的了}if(nums[i]+nums[j]+nums[k]==0){//獲得符合條件的res.push_back({nums[i],nums[j],nums[k]});}}}}}return res;}
};

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

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

相關文章

工商業儲能柜用的Acrel-2000ES儲能能量管理系統-安科瑞 蔣靜

概述 Acrel-2000ES儲能能量管理系統&#xff0c;專門針對工商業儲能柜、儲能集裝箱研發的一款儲能EMS&#xff0c;具有完善的儲能監控與管理功能,涵蓋了儲能系統設備(PCS、BMS、電表、消防、空調等)的詳細信息&#xff0c;實現了數據采集、數據處理、數據存儲、數據查詢與分析…

PHP米表域名出售管理源碼帶后臺

源碼介紹 html5米表源碼PHP域名銷售程序安裝方法&#xff1a; 本站已測試,各項功能正常,功能易用,不復雜,非常適合個人米表使用 1、所有文件傳至網站目錄 2、瀏覽器執行http://你的訪問網址/install 3、輸入mysql帳號及密碼信息&#xff0c;提交安裝 源碼截圖 源碼下載 …

MySQL程序使用的選項文件

MySQL程序使用的選項文件如下&#xff1a; 顯示幫助消息并退出。 在具有多個網絡接口的計算機上&#xff0c;使用此選項可以選擇用于連接MySQL服務器的接口。 安裝字符集的目錄。 如果可能&#xff0c;壓縮客戶端和服務器之間發送的所有信息。 從MySQL 8.0.18開始&#xff0c;…

GPOPS-II教程(3): 航天器最優控制問題

文章目錄 問題描述GPOPS代碼main functioncontinuous functionendpoint function完整代碼代碼仿真結果 最后 問題描述 例子出自論文 Direct solution of nonlinear optimal control problems using quasilinearization and Chebyshev polynomials&#xff08;DOI&#xff1a;1…

新手選擇代理IP時這幾點誤區一定要避開!

在選擇代理IP時&#xff0c;許多用戶可能會因為對代理IP的認識不足或受到一些誤導&#xff0c;而陷入一些常見的誤區。這些誤區不僅可能導致用戶無法達到預期的效果&#xff0c;還可能帶來一些不必要的風險。下面&#xff0c;IPIDEA代理IP就與大家一同分析在選擇代理IP時需要避…

國企:2024年6月中國鐵路相關招聘信息,6.27截止

中國鐵路濟南局集團有限公司2024年度 招聘普通高校本科及以上學歷畢業生公告(三) 中國鐵路濟南局集團有限公司根據企業發展需要,擬招聘普通高等院校本科及以上學歷畢業生,現將有關事項公告如下: 一、招聘計劃 本次招聘崗位均為生產一線操作技能崗位,具體崗位、專業要求…

【教資優秀作文】

目錄 不沉湎于過去&#xff0c; 向未來進發 轉變思維方式&#xff0c;風景這邊獨好 一英尺的距離 面對逆境&#xff0c;智者生存 機遇與準備 1. 巴西足球名將貝利在足壇初露鋒芒時 &#xff0c;一個記者問他&#xff1a;“你哪一個球踢得最好&#xff1f; ” 他回答說&am…

說說ThreadLocal的實現原理

ThreadLocal是什么&#xff1f; ThreadLocal是Java中的一個類&#xff0c;用于創建線程局部變量和解決線程安全。每個線程都有自己獨立的變量副本&#xff0c;彼此之間互不影響。它的主要作用是在多線程環境下&#xff0c;確保每個線程都有自己的變量實例&#xff0c;避免了變…

Retrofit類型安全的HTTP客戶端庫(json)

簡介 Retrofit是Square公司開發的一個類型安全的HTTP客戶端庫&#xff0c;用于Android和Java平臺&#xff0c;它使得與Web服務的交互變得更加簡單快捷。Retrofit將HTTP API轉換成Java接口&#xff0c;讓你可以用更簡潔的代碼形式調用RESTful API&#xff0c;Android網絡編程重點…

在前端開發過程中如果函數參數很多,該如何精簡

1. 在前端開發過程中如果函數參數很多&#xff0c;該如何精簡 1.1. 對象參數&#xff08;對象字面量&#xff09;&#xff1a;1.2. 默認參數和解構賦值&#xff1a;1.3. 使用類或構造函數&#xff1a;1.4. 利用閉包或者高階函數&#xff1a;1.5. 利用ES6的擴展運算符&#xff1…

【LeetCode】每日一題:反轉鏈表

題解思路 循環的方法需要注意prev應該是None開始&#xff0c;然后到結束的時候prev是tail&#xff0c;遞歸的思路很難繞過彎來&#xff0c;主要在于很難想清楚為什么可以返回尾節點&#xff0c;需要多做遞歸題&#xff0c;以及遞歸過程中&#xff0c;可以不使用尾節點來找當前…

Nuxt3 的生命周期和鉤子函數(二)

title: Nuxt3 的生命周期和鉤子函數&#xff08;二&#xff09; date: 2024/6/26 updated: 2024/6/26 author: cmdragon excerpt: 摘要&#xff1a;本文深入介紹了Nuxt.js框架中幾個關鍵的生命周期鉤子函數&#xff0c;包括app:redirected&#xff08;SSR環境下重定向前觸發…

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽 2024/6/26 15:15 4.2.1 全編譯測試 在源碼路徑內&#xff0c;提供了編譯腳本 build.sh&#xff0c;運行該腳本對整個源碼進行編譯&#xff0c;需要在終端切換到解壓 出來的源碼路徑&#xff0c;找到 build.sh 文件…

6.26作業

1.整理思維導圖 2.統計家目錄下.c文件的個數 ls ~/*.c | wc -l 3.終端輸入一個.sh文件&#xff0c;判斷文件是否由可執行權限&#xff0c;如果有可執行權限運行腳本&#xff0c;沒有可執行權限添加可執行權限后&#xff0c;再運行腳本 #!/bin/bash read -p "請輸入一個.…

spring模塊(二)SpringBean(2)InitializingBean

一、介紹 InitializingBean是Spring框架提供的一個接口&#xff0c;用于在Bean初始化完成后執行特定的初始化邏輯。 二、使用 1、使用方法 1.1、實現InitializingBean接口 可以讓Bean實現該接口&#xff0c;并重寫其afterPropertiesSet()方法 1.2、注冊 也即讓bean初始化…

從官方源碼精簡出第1個FreeRTOS程序

一、下載官方源碼 1、打開百度搜索freerots&#xff0c;找到官網:FreeRTOS官網 2、將源碼解壓到沒有中文目錄的路徑下 二、刪減目錄 1、刪除FreeRTOS-Plus和tools 2、刪除FreeRTOS/Demo下除CORTEX_STM32F103_Keil外的所有文件 3、刪除FreeRTOS\Source\portable下除RVDS和MemM…

vue2面試題——API

1. $set this.$set(目標對象target&#xff0c;改的位置&#xff0c;最終數據) /* 數據更新了而視圖沒有更新的情況 */ <template><div>{{ arr }}<button clickbtn>按鈕</button></div> </template> <script> export default {name:…

海康威視攝像頭修復

一、適用場景 1、室外安裝的攝像頭&#xff0c;長時間日曬雨淋后&#xff0c;可能因風向導致雨水進入水晶頭&#xff0c;進而攝像頭無法識別&#xff1b; 2、在經常施工的場地&#xff0c;可能由于車輛的進出&#xff0c;或施工設備的運行導致攝像頭的網線水晶頭斷裂而無法使用…

潯川社團正式啟用 代碼付費制度——潯川總社部

潯川社團正式啟用 代碼付費制度。 規則&#xff1a; 潯川社團源代碼收費標準表&#xff08;1&#xff09; 1-5行代碼0.2元/行1-10行代碼0.3元/行1-20行代碼0.5元/行 潯川社團源代碼收費標準表&#xff08;2&#xff09; 1-30行代碼0.6元/行1-40行代碼0.8元/行1-50行代碼0.09元…

【PythonWeb開發】Flask中間件鉤子函數實現封IP

在 Flask 框架中&#xff0c; 提供了幾種類型的鉤子&#xff08;類似于Django的中間件&#xff09;&#xff0c;它們是在請求的不同階段自動調用的函數。這些鉤子讓你能夠對請求和響應的處理流程進行擴展&#xff0c;而無需修改核心代碼。 Flask鉤子的四種類型 before_first_r…