我不知所措。我試圖將兩個向量相加,使它們等于目標,然后回傳它們的索引;但是,當使用 C 11 for 回圈運行代碼時,結果不正確。當向量 [2,7,11,15] 和 target=9 時,C 11 回圈的結果是 [0, 0]。使用 C 風格的回圈,它是 [0,1]。是什么賦予了?
class Solution {
public:
vector<int> twoSumCstyle(vector<int>& nums, int target) {
vector<int> sol(2);
bool found = false;
for (int i = 0; i< nums.size()-1; i ){
for ( int x = i 1; x <nums.size(); x ){
if (nums[i] nums[x] == target) {
sol[0] = i;
sol[1] = x;
found = true;
break;
}
}
if (found) break;
}
return sol;
}
vector<int> twoSumC11(vector<int>& nums, int target) {
vector<int> sol(2);
bool found = false;
for (int i : nums ){
for ( int x = i 1; x <nums.size(); x ){
if (nums[i] nums[x] == target) {
sol[0] = i;
sol[1] = x;
found = true;
break;
}
}
if (found) break;
}
return sol;
}
};
uj5u.com熱心網友回復:
您的外回圈設定i為nums向量中的實際值,但您的內回圈將其用作索引!作為一個明確的例子,在您的外回圈的第一次迭代中,i將是2,因此您的內回圈將從x : 3.
由于您實際上對作為計算一部分的索引感興趣,因此使用傳統樣式的 for 回圈可能最有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321232.html
上一篇:為什么這個字符陣列需要是靜態的?
下一篇:C 和讀取大型txt檔案
