🤖
NeetCode 150 [Arrays & Hashing]:easy
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]
結構手こずってしまった!
同じ数があるパターンがちょっとややこしい。
Discussion