搜尋

首頁  >  問答  >  主體

c++ - 算法题:N个数中找M个数,其之和等于target

LeetCode 上有一道M=2的题.
用两层循环遍历,O(n^2)可解。

但如果M=5M=10呢,在这种情况下,除了盲搜外,有什么想对高效的方法吗?

PHPzPHPz2773 天前450

全部回覆(3)我來回復

  • 阿神

    阿神2017-04-17 14:48:40

    把問題一步一步轉成2 sum 問題。
    根據這個思路,k sum能做到複雜度是$$ O(n^{k-1}). $$

    另外,2 sum 其實可以做到 $$ O(n) $$

    回覆
    0
  • 黄舟

    黄舟2017-04-17 14:48:40

    leetcode之後會有4sum,3sum題目,還是4sum轉換3sum,3sum到2sum,看看了看討論區也就這思想靠譜

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:48:40

    不是轉換成兩個數組,遍歷一個,二分另外一個?
    例如 m=7, 遍歷一個3n的數組,然後在二分另外一個4n的數組?
    n^((m+1)/2)

    回覆
    0
  • 取消回覆