zoukankan      html  css  js  c++  java
  • 1. Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    从给定序列中找出和为指定数字的两个数字的下标

    You may assume that each input would have exactly one solution.

    假设每个输入只有一个解

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].

    Brute Force

    time complexity O(n2)
    space complexity O(1)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
            vector<int> result;
            int len = nums.size();
            for(int i = 0; i < len - 1; ++i){
                for(int j = i + 1; j < len; ++j){
                    if(nums[i]+nums[j] == target){
                        result.push_back(i);
                        result.push_back(j);
                        return result;
                    }
                }
            }
            return result;
        }
    };

    Hash

    time complexity O(n)
    space complexity O(n)
    该方法给出的序列是从后往前的
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<intint> imap;
        for (int i = 0;; ++i) {
            auto it = imap.find(target - nums[i]);        
            if (it != imap.end()) 
                return vector<int> {i, it->second};            
            imap[nums[i]] = i;
            }
        }
    };








  • 相关阅读:
    Python-文件阅读(open函数)
    列表推导式练习
    Python-集合(set)
    Python-元组(tuple)
    Python-函数-聚合和打散
    Python-列表-非count的计数方法
    Python-字典(dict)
    Python-列表(list)
    Python-字符串
    求三个元素的最大值,和最小值。
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/518f20ed58e6c7e087281705db71057d.html
Copyright © 2011-2022 走看看