微軟,Google面試題 (26) —— 和爲n連續正數序列

題目:輸入一個正數n,輸出所有和爲n連續正數序列。例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-54-67-8
解法一:開闢一個大小爲n/2 + 1(n爲奇數,n爲偶數則大小爲n/2 - 1)的數組,值從1到n。兩個指針p1指向1,p2指向p1的下一個。然後循環,如果p1和p2之間的元素和小於n,p2++;大於n,p1++;等於n,則輸出之後p1,p2同時後移。直到p2走完數組,循環結束。這種方法時間複雜度爲O(n),空間複雜度爲O(n)。
解法二:常規解法,複雜度爲O(n^2)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章