給定一個2n元素的陣列,在n個元素中進行配對,然后找到每個配對中最小元素的總和,然后將總和最大化。我為此寫了一個類:
class Solution
{
public:
int sum = 0, n;
int arrayPairSum(vector<int> & nums)
{
sort(nums, nums 2 * n) 。
for (i = 0; i < 2 * n; i = i 2)
{
sum = sum nums[i];
}
return sum;
}
};
但它顯示了以下錯誤。
Line 5: Char 23: error: 二進制運算式 ('vector< int>' and 'int')
sort(nums,nums 2*n)。
~~~~^~~~
/usr/bin/.../lib/gcc/x86_6
我應該如何洗掉這個錯誤?
uj5u.com熱心網友回復:
錯誤來自這一行
sort(nums, nums 2*n)。
^^^^^^^^^
這里你試圖將2*n添加到ints的向量(即nums)。這并沒有被定義,因此出現了編譯器錯誤。
你需要將迭代器傳遞給std::sort。
#include <algorithm>
std::sort(nums.begin(), nums.end() 。)
此外,在for-loop的條件中要注意,
for(i=0; i<2*n; i=i 2)
^^^^^
n必須被初始化,并且2*n必須小于或等于nums.size()(即向量的大小nums)。否則,你的代碼將出現未定義的行為。
另外,不要用使用命名空間std;來練習。
為什么 "using namespace std; "被認為是不好的做法?
<uj5u.com熱心網友回復:
sort(nums, nums 2 * n)如果nums是指標或迭代器,那么它就可以作業;
這里將是 sort(nums.begin(), nums.begin() 2 * n);/code>
但是nums.begin() 2 * n預設了nums和n之間的一些關系,這可能可以用nums.size()代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/308822.html
標籤:
上一篇:在一個串列上多次映射的時間復雜性
