한 번 밖 에 안 나 오 는 숫자.
설명:
너의 알고리즘 은 선형 시간 복잡 도 를 가 져 야 한다.당신 은 추가 공간 을 사용 하지 않 고 실현 할 수 있 습 니까?
예시 1:
입력: [2, 2, 1] 출력: 1 예시 2:
입력: [4, 1, 2, 1, 2] 출력: 4
해답: 자신 이 쓴 코드 는 생각 이 간단 합 니 다. 사전 을 만 들 고 전체 배열 을 순환 합 니 다. 이 값 이 사전 에 나타 나 면 이 값 이 한 번 이상 나타 나 는 것 을 증명 하고 사전 에서 이 요 소 를 삭제 합 니 다. 그렇지 않 으 면 이 값 을 사전 에 저장 합 니 다.
s = {}
for i in nums:
if i in s.keys():
s.pop(i)
else:
s[i]=1
return list(s.keys())[0]
대신 의 해답 을 보고 자신 이 쓴 방법 이 얼마나 낮은 지 느끼 고 이법 을 쓰 는 것 은 너무 편 하지 않다.먼저 화, 또는, 이 또는 연산 을 말 하 세 요.
1. 연산 (&)
연산 에 참가 한 두 데 이 터 는 이 진 위치 에 따라 '와' 연산 을 한다.
연산 규칙: 0 & 0 = 0;0&1=0; 1&0=0; 1&1=1; 즉, 두 분 이 동시에 '1' 이 고 결 과 는 '1' 이 며 그렇지 않 으 면 0 이다.
예 를 들 어 3 & 5 즉 0000 0011 & 0000 0101 = 0000 0001 이 므 로 3 & 5 는 1 의 가치 가 있다.
예 를 들 어 9 & 5 즉 0000 1001 (9 의 바 이 너 리 패 치) & 00000101 (5 의 바 이 너 리 패 치) = 0000001 (1 의 바 이 너 리 패 치) 은 9 & 5 = 1 을 볼 수 있다.
2. 또는 연산 (|)
연산 에 참가 하 는 두 대상 은 이 진 위치 에 따라 "또는" 연산 을 한다.
연산 규칙: 0 | 0 = 0;0|1=1; 1|0=1; 1|1=1;
즉, 연산 에 참가 하 는 두 대상 은 하나 가 1 이면 그 값 은 1 이다.
예 를 들 어 3 | 5 즉 0000 0011 | 0000 0101 = 0000 0111 이 므 로 3 | 5 는 7 의 가치 가 있다.
예 를 들 어 9 | 5 는 다음 과 같이 계산 할 수 있 습 니 다. 0001001 | 0000101 = 00001101 (10 진법 은 13) 에서 9 | 5 = 13 을 볼 수 있 습 니 다.
3. 이 또는 연산 (^)
연산 에 참가 한 두 개의 데 이 터 는 이 진 위치 에 따라 '이 또는' 연산 을 한다.
연산 규칙: 0 ^ 0 = 0;0^1=1; 1^0=1; 1^1=0;
즉, 연산 에 참가 하 는 두 대상 이 두 개의 해당 위치 가 '이' (값 이 다르다) 면 이 결 과 는 1 이 고 그렇지 않 으 면 0 이다.
예 를 들 어 9 ^ 5 는 다음 과 같이 산식 으로 쓸 수 있 습 니 다: 0000101 ^ 0000101 = 0001100 (10 진법 은 12) 에서 9 ^ 5 = 12 를 볼 수 있 습 니 다.
그래서 이 를 사용 하거나 연산 하 는 모든 같은 요 소 는 서로 상쇄 되 고 나머지 '싱글 개' 요 소 는 생각 하기 쉽다.대신 코드:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
result = nums[0]
for i in range(1,len(nums)):
result ^= nums[i]
return result
차이 야, 계속 노력 해!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.