メインコンテンツへスキップ

NeetCode 150 [Arrays & Hashing]:easy

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

NeetCodeのSolutionを書いていく
#

Contains Duplicate
#

Setにして重複をなくした配列数と、現在の配列数を比べればよいので・・・

class Solution:
    def hasDuplicate(self, nums: List[int]) -> bool:
        set_nums = set(nums)
        return len(set_nums)!=len(nums)

簡単!

Valid Anagram
#

文字のカウントをして、文字ごとに数が合うか調べれば良さそうだけど。 もっといい方法は・・・? 文字をソートして比較する?こっちの方が簡単かな?

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return ''.join(sorted(s)) == ''.join(sorted(t))

簡単!

Two Sum
#

数字の配列とターゲットの数値を与えられる。 足したときにターゲットの数値になる配列の組み合わせを返す。 組み合わせは必ず一つだけ存在する。 インデックスは小さい方から返す。

制限

2 <= nums.length <= 1000
-10,000,000 <= nums[i] <= 10,000,000
-10,000,000 <= target <= 10,000,000

総当たり的にやろうとすると、配列が大きいときに大変だよね。 でもいい方法が思いつかないなぁ。 でもHintを見るとこれでいいみたい。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for num in nums:
            diff = target-num
            idx=nums.index(num)
            next_idx = idx+1
            if diff in nums[next_idx:]:
                idx2=nums[next_idx:].index(diff)+next_idx
                return [idx, idx2]

結構手こずってしまった! 同じ数があるパターンがちょっとややこしい。

Reply by Email

関連記事

dynamodb stream -> event bridge pipesで失敗した時にDLQにメッセージが届かない
· loading · loading
androidのbackground taskについて
· loading · loading
github actionsで使えるコンテキスト情報について
· loading · loading