LeetCode 1 번 문제 : 두 숫자

이 문서에서는 첫 번째, "5 분 학습 알고리즘"국민 수에 출연 LeetCode 설명 일련의 기사 중 하나를.

웹 사이트 : www.cxyxiaowu.com

동영상 설명 : 두 숫자 [] 우 그림 LeetCode LeetCode의 제 1 문제라는 프로그래머 이어

두 숫자 : 제목은 LeetCode 처음 1 번 문제에서 비롯됩니다. 항목 어려움이 쉽고, 45.8 %의 현재의 패스 속도입니다.

제목 설명

정수의 배열을 지정해 nums및 목표 값을 target, 그리고 당신의 배열의 목표 값 찾기 두 개의 정수, 그리고 그들의 배열 첨자로 돌아갑니다.

각 입력이 하나의 답에 해당하는 것으로 가정 할 수 있습니다. 그러나 같은 배열 요소를 다시 사용할 수 없습니다.

예 :

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
复制代码

분석 제목

조회 테이블을 사용하여 문제를 해결합니다.

지도는 레코드의 인덱스 컨테이너 요소의 값을 기록하기 위해 제공하고 어레이 nums 통해서이다.

  • 각각의 반복을 목표 값 사이의 차이의 현재 값을 저장하는 보완 임시 변수를 사용하는 경우와
  • 일관되고 보완 값이 있으면 검색이 내가 반환되는 현재 변수의 값을 찾을 성공적인 가치 지수 인 경우 주사로 기록을 찾아 볼
  • 찾을 수없는 경우, 기록과는 요소의 인덱스를 저장 전

애니메이션 설명

코드 구현

// 1. Two Sum
// https://leetcode.com/problems/two-sum/description/
// 时间复杂度:O(n)
// 空间复杂度:O(n)
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> record;
        for(int i = 0 ; i < nums.size() ; i ++){
       
            int complement = target - nums[i];
            if(record.find(complement) != record.end()){
                int res[] = {i, record[complement]};
                return vector<int>(res, res + 2);
            }

            record[nums[i]] = i;
        }
    }
};

复制代码

HTTPS : //juejin.im/post/5cef814151882503050edddd 재현

추천

출처blog.csdn.net/weixin_33720956/article/details/91463282