ゼロから始めるLeetCode Day97 「349. Intersection of Two Arrays」

概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

Leetcode

Python3で解いています。

ゼロから始めるLeetCode 目次

前回
ゼロから始めるLeetCode Day96 「78. Subsets」

次回
ゼロから始めるLeetCode Day98「39. Combination Sum」

Twitterやってます。

問題

349. Intersection of Two Arrays
難易度はEasy。
コーディング面接対策のために解きたいLeetCode 60問からの抜粋です。

問題としては、2つの配列が与えられたとき,その交点を計算する関数を書いてくださいというものです。

Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]

解法

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        set1,set2 = set(nums1),set(nums2)
        return list(set1&set2)
# Runtime: 56 ms, faster than 44.78% of Python3 online submissions for Intersection of Two Arrays.
# Memory Usage: 13.8 MB, less than 87.75% of Python3 online submissions for Intersection of Two Arrays.

setを使って一意な値を取り出し、リストで返すだけです。
思ったより簡単にかけて拍子抜けしましたが、最初の方はこういった問題でも手間取っていた気がするので組み込み関数などについての知識がついたのかなと思います。

では今回ここまで。お疲れ様でした。

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話

自作のChrome Extensionをインポートした時に "Invalid value for 'content_scripts[0].matches[0]': Empty path."というエラーが出たので解決した