zoukankan      html  css  js  c++  java
  • 1.TwoSum-Leetcode

    #include<iostream>
    #include<algorithm>
    #include<map>
    using namespace std;
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
          map<int,vector<int> > mp;
            for(int i=0;i<nums.size();++i) mp[nums[i]].push_back(i);
            sort(nums.begin(),nums.end());
            vector<int> res;
            for(int i=0;i<nums.size();++i)
            {
                for(int j=i+1;j<nums.size();++j)
                {
                    if(nums[i]+nums[j]==target){
                        res.push_back(i);
                        res.push_back(j);
                        if((j-i)==1&&mp[nums[i]].size()>1)
                        {
                   res[0] = mp[nums[i]][0];
                   res[1] = mp[nums[i]][1];  
                    }
                    else {
                   res[0] = mp[nums[i]][0];
                   res[1] = mp[nums[j]][0];  
                   }
                        return res;
                    }
                    else if(nums[i]+nums[j]>target)break;//利用排序后的性质减少判定次数
                }
            }
            return res;
        }
    };
    int main()
    {
    Solution s;
    int a[]={0,2,0};
    vector<int> v(a,a+sizeof(a)/sizeof(int));
    vector<int> res=s.twoSum(v,0);
    for(int &i:res)cout<<i<<endl;
    }
  • 相关阅读:
    11 MySQL视图
    10 MySQL索引选择与使用
    08 MySQL存储引擎
    09 MySQL字符集
    06 MySQL运算符
    07 MySQL常用内置函数
    05 MySQL数据类型的选择与使用
    04 MySQL数据类型
    js 当前日期后7天
    md5加密
  • 原文地址:https://www.cnblogs.com/freeopen/p/5483036.html
Copyright © 2011-2022 走看看