[leetcode] Python 실현 - 136. 한 번 만 나 오 는 숫자.

3206 단어 leetcode
136. 한 번 밖 에 안 나 오 는 숫자
묘사 하 다.
빈 정수 가 아 닌 배열 을 지정 합 니 다. 특정한 요소 가 한 번 만 나타 나 는 것 을 제외 하고 나머지 모든 요 소 는 두 번 씩 나타 납 니 다.한 번 밖 에 나타 나 지 않 은 원 소 를 찾 아 라.설명: 당신 의 알고리즘 은 선형 시간 복잡 도 를 가 져 야 합 니 다.당신 은 추가 공간 을 사용 하지 않 고 실현 할 수 있 습 니까?
예제 1: 입력: [2, 2, 1] 출력: 1
예시 2: 입력: [4, 1, 2, 1, 2] 출력: 4
나 v 1.0
class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        s = []
        for i in nums:
            if i not in s:
                s.append(i)
            elif i in s:
                s.remove(i)
        return s[0]

좋 습 니 다. 시간 제한 을 초과 하 였 습 니 다.이미 파악 하고 있 습 니 다.아래 v 2.0 버 전 은 코드 를 줄 이기 위 한 것 이지 만 효율 적 으로 개선 되 지 않 았 다.
        for i in nums:
            if nums.count(i) == 1:
                return i

다른 사람의 코드 를 보 니 제 첫 번 째 버 전의 생각 이 괜 찮 은 것 같 습 니 다. 목록 s 를 사전 으로 바 꾸 는 것 이 좋 을 것 같 습 니 다.
        s = {}
        for i in nums:
            if i in s.keys():
                s.pop(i)
            else:
                s[i]=1
        return list(s.keys())[0]

잘 통 과 했 습 니 다. 하지만 실행 시간 을 늘 릴 수 있 는 공간 이 있 습 니 다. 최종 boss 를 보 세 요.고급 용법 이 다 르 거나 ^ 0 이 다 르 거나 그 어떠한 숫자 도 변 하지 않 으 며 그 어떠한 숫자 도 자신 과 다 르 거나 0 이다.a⊕b⊕a=b。덧셈 의 결합 율 과 교환 율 을 만족 시 키 거나 만족 시킨다.666 이상 또는 조작 이 정말 강 합 니 다. 제 가 제출 한 집행 용 은 95.75% 의 Python 3 제출 기록 을 이 겼 습 니 다.v3.0
class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = 0
        for i in nums:
            res^=i
        return res

좋은 웹페이지 즐겨찾기