Leetcode——1. Two Sum

来源:互联网 发布:网络攻击与防御 淘宝 编辑:程序博客网 时间:2024/06/05 06:25

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, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

Subscribe to see which companies asked this question.

Solution:

class Solution {public:    struct Node{        int pos;        int value;    };        static bool greatermark(const Node& s1,const Node& s2)       {          return s1.value<s2.value;       }         vector<int> twoSum(vector<int>& nums, int target)     {        vector<Node> NewNum;        bool is_negative = false;        //将数据导入到新建列表        for (int i=0; i<nums.size(); i++)        {            Node node;            node.pos = i;            node.value = nums[i];            if(0>nums[i])                is_negative = true;            NewNum.push_back(node);        }                //sort        sort(NewNum.begin(), NewNum.end(), greatermark);        vector<int> temp;                if(is_negative)        {            for(int i = 0; i < NewNum.size()-1; i++)            {                for(int j = i+1; j < NewNum.size(); j++)                {                    if(0==temp.size() && target == NewNum[i].value+NewNum[j].value)                    {                        temp.push_back(NewNum[i].pos);                        temp.push_back(NewNum[j].pos);                        return temp;                    }                }               }        }        else        {            //get keyPoint            int loopPos(-1);            for (int i=0; i<NewNum.size(); i++)            {                if(target < NewNum[i].value)                {                    loopPos = i+1;                    break;                }            }            if (-1 == loopPos)    loopPos = NewNum.size();            for(int i = 0; i < loopPos-1; i++)            {                for(int j = loopPos; j > i; j--)                {                    if(0==temp.size() && target == NewNum[i].value+NewNum[j].value)                    {                        temp.push_back(NewNum[i].pos);                        temp.push_back(NewNum[j].pos);                        return temp;                    }                }               }        }        return temp;    }};


0 0
原创粉丝点击