劍指offer 和為S的連續正數序列 兩根指標

2021-07-26 20:01:02 字數 919 閱讀 4592

題目:[和為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...