两数之和
发布日期:2021-05-27 01:30:47 浏览次数:26 分类:技术文章

本文共 1636 字,大约阅读时间需要 5 分钟。

#include<iostream>

#include <vector>
using namespace std;

class Solution {

public:
    vector<int> twoSum(vector<int>& nums, int target)
    {
        unordered_map<int, int> m;
        vector<int> a;
        int flag = 0;
        for (int i = 0; i < nums.size(); ++i) 
        {
            if (m.count(target - nums[i])) 
            {
                return {i, m[target - nums[i]]};
            }
            m[nums[i]] = i;
        }
        return {};
    }
};

void trimLeftTrailingSpaces(string &input) {

    input.erase(input.begin(), find_if(input.begin(), input.end(), [](int ch) {
        return !isspace(ch);
    }));
}

void trimRightTrailingSpaces(string &input) {

    input.erase(find_if(input.rbegin(), input.rend(), [](int ch) {
        return !isspace(ch);
    }).base(), input.end());
}

vector<int> stringToIntegerVector(string input) {

    vector<int> output;
    trimLeftTrailingSpaces(input);
    trimRightTrailingSpaces(input);
    input = input.substr(1, input.length() - 2);
    stringstream ss;
    ss.str(input);
    string item;
    char delim = ',';
    while (getline(ss, item, delim)) {
        output.push_back(stoi(item));
    }
    return output;
}

int stringToInteger(string input) {

    return stoi(input);
}

string integerVectorToString(vector<int> list, int length = -1) {

    if (length == -1) {
        length = list.size();
    }

    if (length == 0) {

        return "[]";
    }

    string result;

    for(int index = 0; index < length; index++) {
        int number = list[index];
        result += to_string(number) + ", ";
    }
    return "[" + result.substr(0, result.length() - 2) + "]";
}

int main() {

    string line;
    while (getline(cin, line)) {
        vector<int> nums = stringToIntegerVector(line);
        getline(cin, line);
        int target = stringToInteger(line);
        
        vector<int> ret = Solution().twoSum(nums, target);

        string out = integerVectorToString(ret);

        cout << out << endl;
    }
    return 0;
}

转载地址:https://blog.csdn.net/huohunri2013/article/details/86481000 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IE9中,去掉select下拉列表的默认样式
下一篇:gdb工作原理和内核实现

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年09月03日 21时53分28秒