首頁 >後端開發 >php教程 >javascript - 有一個數組,從中挑ABC三個整數,讓ABC三個整數加起來等於0,看有多少個這樣的陣列?

javascript - 有一個數組,從中挑ABC三個整數,讓ABC三個整數加起來等於0,看有多少個這樣的陣列?

WBOY
WBOY原創
2016-08-20 09:04:061037瀏覽

面試題,求解答

回覆內容:

面試題,求解答

典型的 3Sum,leetcode 上有原題 https://leetcode.com/problems...

JavaScript 可以看下我的題解 https://github.com/hanzichi/l...

這題也是職人介紹所老趙和 winter 手寫的題,可以看下 https://zhuanlan.zhihu.com/p/...

最好的方法貌似是 O(n^2) 的兩邊逼進

都確定是3個整數了…直接三重循環列舉啊…………

如同 @xiaoboost 說的, 使用簡單的暴力法就可以做出來:

<code class="python">import itertools

def nsum(lst, n, target):
    count = 0
    for c in itertools.combinations(lst, n):
        if sum(c) == target:
            count += 1
    return count


if __name__ == '__main__':
    lst = [-1, 3, -2, 7, -4, -3, 6, 9, -2, -2, 1, 1, 0, 10, -1, 9, 8, -12]
    print(nsum(lst, 3, 0))</code>

結果:

<code>22</code>

我回答過的問題: Python-QA

<code class="python">from itertools import combinations

def sum_is_sth(lst, sth=0, cnt=3):
    return sum([1 for sub_lst in combinations(lst, cnt) if sum(sub_lst) == sth])</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn