zoukankan      html  css  js  c++  java
  • 1. 两数之和

    #include<iostream>
    #include<stdio.h>
    #include<vector>
    #include <algorithm>
    #include <functional>
    #include<string>
    #include<fstream>
    #include <sstream>
    #include <unordered_map>
    using namespace std;
    //构建解决方案
    class Solution {
    public:
    	vector<int> twoSum(vector<int>& nums, int target)
    	{
    		unordered_map<int, int>m;//因此遇到查找问题,常会考虑一下用unordered_map构造空的容器
    		vector<int>result;//定义输出结果向量
    		for (int i = 0; i< nums.size(); i++)///* 遍历数组 */
    		{
    			if (m.find(nums[i]) == m.end())//若这个元素在m中,则判断当前的位置i与查找到的nums[i],得到其位置
    			{
    				m[target - nums[i]] = i;
    
    			}
    			else
    			{
    				result.push_back(m[nums[i]]);//获得下标值
    				result.push_back(i);
    				break;
    			}
    		}
    		return result;
    	}
    };
    
    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;
    }
    

     

     

  • 相关阅读:
    JVM执行子系统探究——类文件结构初窥
    解决nexus3报Cannot open local storage 'component' with mode=rw的异常问题
    基础架构之spring cloud基础架构
    基础架构之持续发布
    基础架构之持续集成
    基础架构之Gitlab Runner
    基础架构之GitLab
    基础架构之Docker私有库
    基础架构之Maven私有库
    基础架构之Mongo
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/10760578.html
Copyright © 2011-2022 走看看