問題
原文
Given an integer array
nums
, returntrue
if any value appears at least twice in the array, and returnfalse
if every element is distinct.
Example 1:
Input: nums = [1,2,3,1]
Output: true
Example 2:
Input: nums = [1,2,3,4]
Output: false
Example 3:
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
Constraints:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
内容
整数配列numsが与えられます。配列内で2回登場する要素があればTrueを返してください。全ての要素が異なる場合はFalseを返して下さい。
※正しくない可能性があります。
方針
・Setを使って要素数が異なる場合にTrue、要素数が同じ場合はFalseを返す
解答
解答1
1 2 3 4 5 6 7 8 9 10 |
class Solution: def containsDuplicate(self, nums: List[int]) -> bool: #_にsetで重複を排除した状態で格納 _ = set(nums) #_とnumsの要素数が異なる場合はTrueを返す if len(_) != len(nums): return True #_とnumsの要素数が同じ場合はFalseを返す else: return False |
setを使うと重複を排除することができる。
同じ値が配列内にある場合は、重複が除外されて要素数が少なくなるのでTrueかFalseか判定することができる。
補足・参考・感想
■感想
久しぶりに自力で解けたのだけど、計算量を考えつつ解法について話し合いながら解答できる状態になりたい。また、コーディングインタビューに頻出の問題の練習必須。
■参考
・PythonのSet型について ※公式ドキュメント
コメント