for 루프는 주로 첫 번째 매개변수 배열을 순회한 다음 두 가지 주요 단계를 수행합니다.
먼저 if 이후를 살펴보겠습니다. exist[nums[i]] = i + 1; 이 문장은 모든 루프에서 실행됩니다. 여기서 존재는 사전을 의미합니다. 예를 들어 통과한 첫 번째 숫자는 2(i=0)이므로 존재가 저장됩니다. 이러한 키-값 쌍은 한 루프 후에 다음과 같이 존재합니다. 배열 결과적으로 "요소 값": "배열 인덱스 + 1"의 키-값 쌍 사전입니다.
다음으로 if의 판단을 살펴보겠습니다. 물론, for 루프에서 i=0일 때 존재는 아직 키-값 쌍을 삽입하지 않았으며 if 표현식은 거짓입니다
하지만 i=1일 때 존재[target-nums[1]]는 존재[9-7] = 존재[2]를 의미합니다. 이것이 i=0일 때 주입된 존재의 첫 번째 키-값 쌍이 아닌가요? ? 그래서 해당 키-값 쌍의 값(실제로는 원래 배열의 원래 값 + 1의 인덱스)을 저장하여 ret을 하고, 그 다음 현재 i+1을 저장하여 ret... 마지막으로 루프가 완료된 후 , ret 로 돌아가서 [1,2]를 얻었습니다. ps: 질문자가 제공한 예제에 대한 답변이 코드와 일치하지 않습니다.
요약: 이 알고리즘의 핵심은 객체를 사용하여 순회한 배열 요소를 저장하고, target-nums[i]를 사용하여 간접적으로 존재하는 요소 중에서 조건을 충족하는 요소가 있는지 찾는 것입니다. 배열에서 탐색되었습니다.
질문자는 예제를 사용하여 코드를 읽어볼 수 있습니다. 내 의견은 다음과 같습니다.
예를 들어, 스크린샷의 예를 클릭하세요:
for 루프는 주로 첫 번째 매개변수 배열을 순회한 다음 두 가지 주요 단계를 수행합니다.
먼저 if 이후를 살펴보겠습니다.
exist[nums[i]] = i + 1;
이 문장은 모든 루프에서 실행됩니다. 여기서 존재는 사전을 의미합니다. 예를 들어 통과한 첫 번째 숫자는 2(i=0)이므로 존재가 저장됩니다. 이러한 키-값 쌍은 한 루프 후에 다음과 같이 존재합니다.배열 결과적으로 "요소 값": "배열 인덱스 + 1"의 키-값 쌍 사전입니다.
다음으로 if의 판단을 살펴보겠습니다. 물론, for 루프에서 i=0일 때 존재는 아직 키-값 쌍을 삽입하지 않았으며 if 표현식은 거짓입니다
하지만 i=1일 때 존재[target-nums[1]]는 존재[9-7] = 존재[2]를 의미합니다. 이것이 i=0일 때 주입된 존재의 첫 번째 키-값 쌍이 아닌가요? ? 그래서 해당 키-값 쌍의 값(실제로는 원래 배열의 원래 값 + 1의 인덱스)을 저장하여 ret을 하고, 그 다음 현재 i+1을 저장하여 ret... 마지막으로 루프가 완료된 후 , ret 로 돌아가서 [1,2]를 얻었습니다. ps: 질문자가 제공한 예제에 대한 답변이 코드와 일치하지 않습니다.
요약: 이 알고리즘의 핵심은 객체를 사용하여 순회한 배열 요소를 저장하고, target-nums[i]를 사용하여 간접적으로 존재하는 요소 중에서 조건을 충족하는 요소가 있는지 찾는 것입니다. 배열에서 탐색되었습니다.