題目:[和為s的連續正數序列]
這個題吧,出的確實挺好的。
和上個題完美演繹了兩根指標的用法。
第一次錯誤是因為,這兩個雖然很像,但是兩根指標的意義並不同。
並且開始時的位置也不同。
本題,我之所以前面做錯了,因為把兩根指標意義沒搞懂。
上個題,small較小數。big是較大數。如果和較大, –big。反之,++small
但是,這個題目不一樣,low和high是區間。如果區間和小,high應該增大,相當於增加區間長度。如果和較大,那麼應該縮短區間長度,low++。需要注意,其實縮小區間長度,high–也可以。但是因為這回合之前的情形重疊,所以規定都向前走。
class solution
ret.push_back(v);
++low;
}else
if(telse ++low;
}return ret;
}private:
int acc(int low, int high)
return sum;
}};
來了一次暴力法,這個題雖然過了,但是這個方法有很明顯的問題,當sum很大時其實,我沒有對區間做很好的判定,只是過了而已。
class solution
--j;
if( cur == sum && cur != begin )
ans.push_back(ret);}}
return ans;
}};
[參考新的方法]
class solution
else
if( cur < sum )
else
}return ret;
}};
劍指offer 和為S的連續正數序列
小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...
劍指offer 和為S的連續正數序列
小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括兩個數 沒多久,他就得到另一組連續正數和為100的序列 18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和...
劍指offer 和為 s 的連續正數序列
輸入乙個正數 s,列印出所有和為 s 的連續正數序列 至少兩個數 例如輸入 15,由於 1 2 3 4 5 4 5 6 7 8 15,所以結果打出 3 個連續序列 1 5 4 6 和 7 8。考慮用兩個數 small 和 big 分別表示序列的最小值和最大值。首先把 small 初始化為 1,big...