力扣 454題 四數相加Ⅱ 記錄

題目描述

給你四個整數數組 nums1、nums2、nums3 和 nums4 ,數組長度都是 n ,請你計算有多少個元組 (i, j, k, l) 能滿足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0示例 1:
輸入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
輸出:2
解釋:
兩個元組如下:
1. (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0
2. (1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0
3. 
示例 2:
輸入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]
輸出:1

思想

  1. 遍歷 nums1 和 nums2:
    雙重循環遍歷 nums1 和 nums2 的每個元素 i 和 j。計算和 i+j,并將該和作為鍵存儲到 map 中,值為這個和出現的次數(如果已存在,則增加計數)。
  2. 遍歷 nums3 和 nums4:
    再次使用雙重循環,這次遍歷 nums3 和 nums4 的每個元素 k 和 q。
    計算 - (k + q),即我們需要在 map 中找到的目標值,使得四個數之和為零。
    使用 map.find(target) 查找是否有符合條件的鍵值對存在。如果找到了,將找到的值(即前面計算出的和的出現次數)加到 count 中。

舉例說明:

第一步:計算 nums1 和 nums2 的所有可能的元素和
循環過程:
對于 nums1[0] = 1:nums2[0] = -2 -> 和為 -1,map[-1] = 1nums2[1] = -1 -> 和為 0,map[0] = 1
對于 nums1[1] = 2:nums2[0] = -2 -> 和為 0,map[0] 現在增加為 2(因為已經有一個和為 0)nums2[1] = -1 -> 和為 1,map[1] = 1
此時,map 的內容如下:-1 出現 10 出現 21 出現 1 次第二步:計算 nums3 和 nums4 的所有可能的元素和的相反數,并查找是否存在于 map 中
循環過程:
對于 nums3[0] = -1:nums4[0] = 0 -> 和為 -1,相反數是 1,map 中 1 出現了 1 次,所以 count += 1nums4[1] = 2 -> 和為 1,相反數是 -1,map 中 -1 出現了 1 次,所以 count += 1
對于 nums3[1] = 2:nums4[0] = 0 -> 和為 2,相反數是 -2,map 中不存在 -2nums4[1] = 2 -> 和為 4,相反數是 -4,map 中不存在 -4
結果:count 的值為 2,這表示有兩個元組滿足條件:(0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0(1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0

完整代碼

#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int, int> map;int count = 0;for(int i : nums1){for(int j : nums2){map[i + j]++;}}for(int k : nums3){for(int q : nums4){int target = 0 - (k + q);if(map.find(target) != map.end()){count += map[target];}}}return count;}
};int main()
{Solution s;vector<int> nums1 = {1,2};vector<int> nums2 = {-2,-1};vector<int> nums3 = {-1,2};vector<int> nums4 = {0,2};cout << s.fourSumCount(nums1, nums2, nums3, nums4) << endl;return 0;
}

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

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

相關文章

Flutter 中的 SliverOpacity 小部件:全面指南

Flutter 中的 SliverOpacity 小部件&#xff1a;全面指南 Flutter 是一個功能強大的 UI 框架&#xff0c;由 Google 開發&#xff0c;允許開發者使用 Dart 語言來構建高性能、美觀的跨平臺應用。在 Flutter 的滾動組件體系中&#xff0c;SliverOpacity 是一個用來為其子 Slive…

強化學習中Q值的概念

在強化學習中&#xff0c;Q值是一個非常核心的概念&#xff0c;用來表示在給定的狀態下&#xff0c;采取某個特定動作所期望獲得的總回報。Q值基本上是一種衡量“動作價值”的方式&#xff0c;即在當前狀態采取一個動作能帶來多大價值。 定義和計算 Q值通常表示為 (Q(s, a))&…

RabbitMQ小結

MQ分類 Acitvemq kafka 優點&#xff1a;性能好&#xff0c;吞吐量高百萬級&#xff0c;分布式&#xff0c;消息有序 缺點&#xff1a;單機超過64分區&#xff0c;cpu會飆高&#xff0c;消費失敗不支持重試 &#xff0c; Rocket 阿里的mq產品 優點&#xff1a;單機吞吐量也…

香橙派 Kunpeng Pro:基于ncnn的深度學習模型量化與部署實踐

一 引言 近10年里以深度學習為代表的機器學習技術在圖像處理&#xff0c;語音識別&#xff0c;自然語言處理等領域里取得了非常多的突破&#xff0c;其背后的核心算法是深度學習為代表的AI基礎模型。 一般來講&#xff0c;我們進行AI項目研發時&#xff0c;遵循三個步驟。 第…

LabVIEW步進電機的串口控制方法與實現

本文介紹了在LabVIEW環境中通過串口控制步進電機的方法&#xff0c;涵蓋了基本的串口通信原理、硬件連接步驟、LabVIEW編程實現以及注意事項。通過這些方法&#xff0c;用戶可以實現對步進電機的精確控制&#xff0c;適用于各種自動化和運動控制應用場景。 步進電機與串口通信…

python3.8環境下安裝pyqt5

1.實驗目的 測試python可視化工具包pyqt5,為后期做系統前端頁面做鋪墊 2.實驗環境 1.軟件 anaconda2.5 pycharm2024.1.1 pyqt5 2.硬件 GPU 4070TI Intel I7 1400K 3. 安裝步驟 (base) C:\Users\PC>conda -V conda 23.7.4(base) C:\Users\PC>conda create qttest p…

spring項目修改時間格式

一、配置方式 在application.yml上添加 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8 二、注解方式 1、添加依賴 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId&…

解釋def __int__(self):和def __init__(self):的區別

文章目錄 __init__ 方法例子 __int__ 方法例子 總結 def __int__(self): 和 def __init__(self): 是Python中兩個不同的特殊方法&#xff08;或魔法方法&#xff09;&#xff0c;它們有著不同的用途和含義。 __init__ 方法 作用&#xff1a;__init__ 方法是類的構造函數。當你…

大文件分片【筆記】

createChunk.js Spark-md5計算文件各分片MD5生成文件指紋 可以幫助我們更加方便地進行文件哈希計算和文件完整性檢測等操作。 import sparkMd5 from ./sparkmd5.jsexport function createChunk(file, index, chunkSize) {return new Promise((resolve, reject) > {const sta…

整理好了!2024年最常見 20 道 Kafka面試題(一)

一、什么是Apache Kafka&#xff0c;它主要用于什么場景&#xff1f; Apache Kafka是一個分布式流處理平臺&#xff0c;最初由LinkedIn開發&#xff0c;后來成為Apache軟件基金會的一個開源項目。它被設計為一個高吞吐量、可擴展、容錯的消息隊列系統&#xff0c;能夠處理實時…

【java】【python】leetcode刷題記錄--棧與隊列

232 用棧實現隊列 題目描述 兩個棧模擬隊列的思路是利用棧&#xff08;后進先出結構&#xff09;的特性來實現隊列&#xff08;先進先出結構&#xff09;的行為。這種方法依賴于兩個棧來逆轉元素的入隊和出隊順序&#xff0c;從而實現隊列的功能。 入隊操作&#xff08;使用s…

GIS、GPS、RS綜合應用

劉老師&#xff08;副教授&#xff09;&#xff0c;北京重點高校資深專家&#xff0c;擁有豐富的科研及工程技術經驗&#xff0c;長期從事3S在環境中的應用等領域的研究和教學工作&#xff0c;具有資深的技術底蘊和專業背景。 第一章、3S 技術及應用簡介 1.1、3S 技術及集成簡…

前端技術專家崗(虛擬崗)

定位&#xff1a; 團隊技術負責人、技術領導者&#xff1b;確保框架、工具的低門檻、高性能、可擴展&#xff1b; 素質要求&#xff1a; 具備架構設計能力&#xff1b;一個或者多個領域的技術專家&#xff1b;較為豐富的基礎建設經驗&#xff1b;項目管理能力、任務分解、協…

跨模型知識融合:大語言模型的知識融合

大語言模型&#xff08;LLMs&#xff09;在多個領域的應用日益廣泛&#xff0c;但確保它們的行為與人類價值觀和意圖一致卻充滿挑戰。傳統對齊方法&#xff0c;例如基于人類反饋的強化學習&#xff08;RLHF&#xff09;&#xff0c;雖取得一定進展&#xff0c;仍面臨諸多難題&a…

1211. 查詢結果的質量和占比

1211. 查詢結果的質量和占比 題目鏈接&#xff1a;1211. 查詢結果的質量和占比 代碼如下&#xff1a; # Write your MySQL query statement below select query_name,round(avg(rating/position),2) as quality,round(sum(if(rating<3,1,0))*100/count(*),2) as poor_quer…

wandb安裝與使用 —— 用于跟蹤、可視化和協作機器學習實驗的工具

文章目錄 一、wandb簡介二、wandb注冊與登陸&#xff08;網頁&#xff09; —— 若登錄&#xff0c;則支持在線功能三、wandb安裝與登陸&#xff08;命令行&#xff09; —— 若不登錄&#xff0c;則只保留離線功能四、函數詳解4.1、wandb.init() —— 初始化一個新的 wandb 實…

上位機圖像處理和嵌入式模塊部署(f407 mcu中fatfs中間件使用)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 前面我們已經實現了spi norflash的驅動&#xff0c;理論上這已經可以實現數據的持久化保存了。為什么還需要一個文件系統呢&#xff1f;主要原因還…

在 Win系統安裝 Ubuntu20.04子系統 WSL2 (默認是C盤,第7步開始遷移到D盤,也可以不遷移)

1、簡介 WSL在Windows 10上原生運行Linux二進制可執行文件&#xff0c;不用單獨安裝虛擬機。 WSL2是WSL的第二個版本&#xff0c;提供了與WSL相比的顯著性能改進和完全的系統呼叫兼容性。通過運行Linux內核在一個輕量級虛擬機&#xff08;VM&#xff09;中實現。 2、安裝 電…

ThingsBoard MQTT 連接認證過程 源碼分析+圖例

整個連接過程如圖所示&#xff1a; 高清圖片鏈接 1、環境準備 thingsboard3.5.1 源碼啟動。&#xff08;不懂怎么啟動的&#xff0c;大家可以看我的博文ThingsBoard3.5.1源碼啟動&#xff09;MQTTX 客戶端&#xff08;用來連接 thingsboard MQTT&#xff09;默認配置。queue.…