• 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;
    }
  • 相关阅读:
    nioSocket
    Socket
    常见协议和标准
    Object类clone方法
    java中的运算符
    java中方法的定义
    Spring中实现定时调度
    Spring中对资源的读取支持
    HashMap的实现原理
    固定Realm 与配置数据库连接实现登录验证
  • 原文地址:https://www.cnblogs.com/freeopen/p/5483036.html
Copyright © 2020-2023  润新知