다음 내용은 다음과 같습니다
감안할 때 정수의 배열nums
과 목표 값target
, 당신은 배열의 두 정수의 목표 값을 파악하고, 그 배열 첨자로 돌아갑니다 .你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
기타 참고 사항 :
주제는 다음이 같은 배열 요소에서 재사용 될 수 없음을주의 :
nums의 = [3, 2, 4, 6 = 대상이 시간 대신 [2,1] 반환한다 [0,0]
nums의 = [3,3] 목표 = 6, 이때 반환한다 [0, 1] 대신 [0,0] 또는 [1,1]
가장 쉬운 방법은, 두 개의 사이클 쓰기 두 숫자의 합과 같다 대상을 식별하는 것입니다
그러나 다음의 요소를 찾기 위해 처음부터 반복 요소 배열의 범위를 제한하기위한 루프 두 가지를 가지고하지 않기 위해, 회로도 다음
클래스 솔루션 (객체) : 데프 twoSum (자기, nums, 대상) : "" " : 타입 nums : 목록 [INT] : 유형 대상 : INT : RTYPE : 목록 [INT] "" " 길이 = LEN (nums) 에 대한 I 의 범위 (길이) 에 대한 J 의 범위 (I + 1 : 길이) 경우 (nums은 [I]는 + nums [J] == 타겟) : 리턴 [I, J를 ]
두 번 사이클 효율은 코멘트 영역의 레코드 레이블 요소에서 요소를 통과 할 때, 수행을 참조하기 위해 당신이 사전을 사용할 수 높지 않다
우리가 목표 nums [i]를 찾을 때, 당신은 단지 사전에서 찾을 수 있습니다, 사전 조회 시간 복잡도는 $ O (1) $입니다
클래스 솔루션 : 데프 twoSum (자기, nums, 대상) : "" " : 타입 nums : 목록 [INT] : 유형 대상 : INT : RTYPE : 목록 [INT] "" " N = LEN (nums) 룩업 = {} 에 대한 I 의 범위 (N) : TMP = 대상 - nums [I] 의 경우 TMP 에 조회 : 창 [룩업 [TMP, I] 룩업 [nums [내가] = 1