2016-06-28 141 views
-14
class Solution { 
public: 
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { 
     sort(nums1.begin(),nums1.end()); 
     sort(nums2.begin(),nums2.end()); 
     vector<int> a; 
     int i=0,j=0,k=0; 
     while(i<nums1.size()&&j<nums2.size()) 
     { 
      if(nums1[i]>nums2[j]) 
      { 
       j++; 
      } 
      else if(nums1[i]<nums2[j]) 
      { 
       i++; 
      } 
      else 
      { 
       if(a.empty() || a.back() != nums1[i]) 
       { 
        a[k]=nums1[i]; 
       } 
       i++; 
       j++; 
       k++; 
      } 
     } 
     return a; 
    } 
}; 
+3

請正確格式化您的代碼。你被低估爲遺忘。 – PaulMcKenzie

+1

目前尚不清楚,但您似乎並未聲明矢量類型。 vector是一個模板,因此需要一個類型來容納在容器中的向量。 E.g載體。你確定這是一個運行時錯誤嗎?代碼是否編譯? –

+0

用'a.at(k)'替換'a [k]'。你將學習使用'at()'來解決你自己的問題,使用out-of-bounds訪問(而不是分段錯誤或崩潰)的美妙之處。 – PaulMcKenzie

回答

0

a被聲明爲空向量,因此您不能訪問a的元素,除非在a中有任何元素。 你想

a.push_back(nums[i]); 

,而不是

a[k] = nums1[i]; //a is declared as empty vector so you have to push elements to it. 

OR

你可以做

vector<int> a(num1.size()); 

,而不是

vector<int> a; 
-1

問題在於你通過[k]訪問vector。

向量a是一個空向量,不能用[k]來訪問。

您需要使用a.push_back(nums [i]);一些尺寸像載體的

聲明向量a(10); 然後用[k]訪問它。

相關問題