【LeetCode】136. 싱글넘버 풀기.
3946 단어 알고리즘과 데이터 구조tech
문제 개요
비공정수로 구성된 배열
nums
을 주고 한 정수를 제외한 모든 정수는 두 번 나타난다.예:
Input : nums = [2,2,1]
Output : 1
구속
생각
nums
의 요소整数:出現回数
를 앞에서 순서대로 보고 저장하여 각 정수의 출현 횟수를 계수出現回数=1
정수 찾기 다음과 같은 생각으로 구현:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dict = {}
for n in nums:
if n in dict:
dict[n] += 1
else:
dict[n] = 1
for key, val in dict.items():
if val == 1:
return key
보태다
위 코드의
if n in dict:
에 대한 부분은 계산량 O(n)가 아닌가요?아마도 누군가가 이런 의문을 갖게 될 것이다.hash
에서 사전형dict
Python wiki을 사용했습니다.조작하다
평균 시간 계산량
최차 시간 계산량
key in dict
O(1)
O(n)
되다
파이톤의 사전 형식이 해시표에서 이루어졌기 때문이다[1]
이에 따라 첫 번째
for
부분은 O(n*1)=O(n), 두 번째for
부분은 O(n)여서 전체가 O(n)인 것으로 나타났다.각주
CPython에서 사전은 어떻게 이루어졌습니까디자인 및 히스토리 FAQ-Python 3.9.2 문서 ↩︎
Reference
이 문제에 관하여(【LeetCode】136. 싱글넘버 풀기.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ike_pon/articles/46d36fe981ddf9d30a1c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)