작심삼일

[LeetCode] 136 | Single Number | Python 본문

스터디/코테

[LeetCode] 136 | Single Number | Python

yun_s 2022. 2. 15. 09:59
728x90
반응형

문제 링크: https://leetcode.com/problems/single-number/


문제

Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

You must implement a solution with a linear runtime complexity and use only constant extra space.


조건

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • Each element in the array appears twice except for one element which appears only once.

내 풀이

주어진 배열(nums)를 정렬한다.

nums 길이가 한 개라면 그 원소를 출력한다.

nums의 2*n번째와 2*n+1번째 원소가 같지 않다면 2*n번째 원소를 리턴한다.

for문 동안 리턴되는 값이 없었다면 맨 마지막에 있는 제일 큰 원소가 혼자 존재하는 것이므로 그것을 리턴한다.


코드

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return nums[0]
        
        nums = sorted(nums)
        
        for n in range(int(len(nums)/2)):
            if nums[2*n] != nums[2*n+1]:
                return nums[2*n]
        
        return nums[-1]
728x90
반응형
Comments