• 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;
            }
        }
    };








  • 相关阅读:
    html中script标签的使用方法
    css关于浮动的高度塌陷
    canvas用数组方式做出下雨效果
    canvas简易画板。
    html5新标签
    闭包的意义及用法
    字符串的添加方法
    js几种数组遍历方法.
    简易网页打卡页面.
    回忆继承多态
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/518f20ed58e6c7e087281705db71057d.html
Copyright © 2020-2023  润新知