ゼロから始めるLeetCode Day75 「15. 3Sum」
概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day74 「12. Integer to Roman」 次回 ゼロから始めるLeetCode Day76「3. Longest Substring Without Repeating Characters」 Twitter やってます。 問題 15. 3Sum 難易度はMedium。 問題としては、n個の整数の配列 nums があるとすると、 nums に a + b + c = 0 となる要素 a, b, c があるかどうかを確認するアルゴリズムを設計し、0の和を与える配列の中のすべてのユニークな三重項を求めよ。 Example: Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ] 解法 3つ選び、0になる組み合わせを選べ、というものです。 組み合わせの鉄則とも言えるかもしれませんが、先に何を固定するかを決めたほうが良いと思います。 今回は以下のように書きました。 class Solution : def threeSum ( self , nums : List [ int ] ) - > List [ List [ int ] ]