🤖

NeetCode 150 [Arrays & Hashing]:easy

2025/01/15に公開

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]

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

Valid Palindrome

Discussion