NeetCodeのSolutionを書いていく #
Contains Duplicate #
https://neetcode.io/problems/duplicate-integer
neetcode.io
Setにして重複をなくした配列数と、現在の配列数を比べればよいので・・・
class Solution:
def hasDuplicate(self, nums: List[int]) -> bool:
set_nums = set(nums)
return len(set_nums)!=len(nums)
簡単!
Valid Anagram #
https://neetcode.io/problems/is-anagram
neetcode.io
文字のカウントをして、文字ごとに数が合うか調べれば良さそうだけど。 もっといい方法は・・・? 文字をソートして比較する?こっちの方が簡単かな?
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
return ''.join(sorted(s)) == ''.join(sorted(t))
簡単!
Two Sum #
https://neetcode.io/problems/two-integer-sum
neetcode.io
数字の配列とターゲットの数値を与えられる。 足したときにターゲットの数値になる配列の組み合わせを返す。 組み合わせは必ず一つだけ存在する。 インデックスは小さい方から返す。
制限
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