면접질문 답변해주세요
면접질문 답변해주세요
전형적인 3Sum, 원문은 leetcode https://leetcode.com/problems...
에서 보실 수 있습니다.JavaScript의 경우 내 솔루션 https://github.com/hanzichi/l...을 확인하실 수 있습니다.
이 질문 역시 일자리 창출 기관의 자오 씨와 윈터 씨가 직접 작성한 것입니다. 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>