1. 程式人生 > 其它 >C++記憶體分割槽 static 變數與全域性變數的區別 編譯單元 COMMON塊 .bss段連結前後不一樣

C++記憶體分割槽 static 變數與全域性變數的區別 編譯單元 COMMON塊 .bss段連結前後不一樣

做題思路 or 感想:

  1,用一個雜湊表儲存  A  +  B 的各種和的個數,把題目轉化為兩個數(A + B 和 C + D)之和,知道這個了以後思路就開闊很多了

  2,因為這裡是四個陣列,所以不需要查重,直接搜,find 搜到直接符合條件就好了

 1 class Solution {
 2 public:
 3     int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
4 unordered_map<int, int>HashMap; //用來記錄 A + B陣列的各種和的個數 5 int result = 0; 6 for (int i = 0; i < nums1.size(); i++) { 7 for (int j = 0; j < nums2.size(); j++) { //記錄 A + B 的和 8 int sum = nums1[i] + nums2[j]; 9 HashMap[sum]++;
10 } 11 } 12 for (int i = 0; i < nums3.size(); i++) { 13 for (int j = 0; j < nums4.size(); j++) { //因為這裡是四個不同的陣列,所以不需要查重,如果都是一個數組,則要查重了! 14 //由於 A + B = - C - D,故這裡直接找就好了 15 if (HashMap.find(-nums3[i] - nums4[j]) != HashMap.end()) {
16 auto it = HashMap.find(-nums3[i] - nums4[j]); 17 result += (*it).second; 18 } 19 } 20 } 21 return result; 22 } 23 };