cari

Rumah  >  Soal Jawab  >  teks badan

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

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

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

PHPzPHPz2773 hari yang lalu446

membalas semua(3)saya akan balas

  • 阿神

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

    把问题一步一步转成2 sum 问题。
    根据这个思路,k sum能做到复杂度是$$ O(n^{k-1}). $$

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

    balas
    0
  • 黄舟

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

    leetcode之后会有4sum,3sum题目,还是4sum转化3sum,3sum到2sum,看看了看讨论区也就这思想靠谱

    balas
    0
  • PHP中文网

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

    难道不是转化成两个数组,遍历一个,二分另外一个?
    比如 m=7, 遍历一个3n的数组,然后在二分另外一个4n的数组?
    n^((m+1)/2)

    balas
    0
  • Batalbalas