面試題57 - II. 和為s的連續(xù)正數(shù)序列

和為s的連續(xù)正數(shù)序列

題目描述

輸入一個正整數(shù) target 逻杖,輸出所有和為 target 的連續(xù)正整數(shù)序列(至少含有兩個數(shù))匣椰。

序列內(nèi)的數(shù)字由小到大排列,不同序列按照首個數(shù)字從小到大排列朱监。


示例:

輸入:target = 9
輸出:[[2,3,4],[4,5]]

輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]


提示:
1 <= target <= 10^5

轉載來源:力扣(LeetCode)


題目分析

一開始想這題是關于數(shù)組的求和饭豹,很有可能是和動態(tài)規(guī)劃有關,考點就是通過動態(tài)規(guī)劃來存放中間計算量毕贼,來達到加速效果温赔,不然會卡時間超限,嗯我真是天才鬼癣,一看題目什么都知道了陶贼;


動態(tài)規(guī)劃

然后就秒想出狀態(tài)轉移方程sum[i][j] = sum[i-1][j-1] + j,時空都是O(N^2)待秃,然后再天才的千方百計將空間復雜度下降到O(N)拜秧,并添加一些提前結束計算循環(huán)的剪枝,再按照題目要求輸出,才提交上去章郁,果然AC了枉氮!只不過...


Kotlin提交

我真是天才,超越Kotlin100%的用戶,但是感覺不太對勁啊嘲恍,怎么花了差不多四秒才執(zhí)行完足画,遂用Java重新寫了一遍,提交上去佃牛,啊哦~
Java提交

我真是個弟弟淹辞,然后我就重新想,這道題的第I部分是前后夾擊俘侠,但是這道題這樣做不行象缀,因為要求是連續(xù)和,不能前后計算爷速,因為連續(xù)和為target的幾個數(shù)(兩個以上)央星,最大的只能是target/2,所以就從target/2往前推惫东,一開始設置尾指針tail為target/2莉给,頭指針head為target/2-1,長度len為2廉沮,和sum為head+tail颓遏,就開始下面的循環(huán)

  • sum為target,就將從head開始滞时,包裝出一個長度為len的步長為1的單增數(shù)組叁幢,并添加到答案,重點來了坪稽,因為從head到tail的和為target曼玩,那么,tail就肯定不能出現(xiàn)在長度len更長的其他答案里面(反證法窒百,如果在黍判,和就肯定比target大),tail就需要往前推篙梢,tail往前推了样悟,head+tail肯定就小于target了,所以head也往前推庭猩,sum就比原來小了len那么多

  • sum比target大窟她,那tail肯定要排除在后面的答案序列里面,舉個例子蔼水,2+3+4比8要大震糖,我們是從后往前的,如果不把4踢掉趴腋,那么連續(xù)序列肯定比(2+3+4)要長吊说,肯定不符合答案论咏,所以這種情況下前后指針都往前推,sum就比原來小了len那么多

  • sum比target小颁井,這種情況只能head往前推厅贪,不能head和tail都往前推,因為head to tail比target小雅宾,都往前推的話還是比target小养涮,沒意義,只能通過增長序列來求解眉抬,所以這種情況head往前推贯吓,sum+=head,len++

ArrayList<int[]> ans = new ArrayList<>();
        int tail = (target % 2 == 0) ? target / 2 : target / 2 + 1;
        int head = tail - 1;
        int len = 2;
        int sum = tail + head;
        while(head != 0){
            if(sum == target){
                int[] tmp = new int[len];
                for (int i = 0; i < tmp.length; i++) {
                    tmp[i] = head + i;
                }
                ans.add(tmp);
                tail--;
                head--;
                sum -= len;
            }else if(sum > target){
                head--;
                tail--;
                sum -= 2;
            }else{
                head--;
                len++;
                sum += head;
            }
        }
        int[][] ret = new int[ans.size()][];
        for (int i = 0; i < ans.size(); i++) {
            ret[i] = ans.get(ans.size() - i - 1);
        }
        return ret;

代碼文件蜀变,kotlin的為DP算法悄谐,Java為指針算法


?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市库北,隨后出現(xiàn)的幾起案子爬舰,更是在濱河造成了極大的恐慌,老刑警劉巖寒瓦,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洼专,死亡現(xiàn)場離奇詭異,居然都是意外死亡孵构,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門烟很,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颈墅,“玉大人,你說我怎么就攤上這事雾袱⌒羯福” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵芹橡,是天一觀的道長毒坛。 經(jīng)常有香客問我,道長林说,這世上最難降的妖魔是什么煎殷? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮腿箩,結果婚禮上豪直,老公的妹妹穿的比我還像新娘。我一直安慰自己珠移,他們只是感情好弓乙,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布末融。 她就那樣靜靜地躺著,像睡著了一般暇韧。 火紅的嫁衣襯著肌膚如雪勾习。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天懈玻,我揣著相機與錄音巧婶,去河邊找鬼。 笑死酪刀,一個胖子當著我的面吹牛粹舵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骂倘,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼眼滤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了历涝?” 一聲冷哼從身側響起诅需,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荧库,沒想到半個月后堰塌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡分衫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年场刑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚪战。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡牵现,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邀桑,到底是詐尸還是另有隱情瞎疼,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布壁畸,位于F島的核電站贼急,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捏萍。R本人自食惡果不足惜太抓,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望令杈。 院中可真熱鬧腻异,春花似錦、人聲如沸这揣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至机打,卻和暖如春矫户,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背残邀。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工皆辽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芥挣。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓驱闷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親空免。 傳聞我的和親對象是個殘疾皇子空另,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容