アルゴリズム意図的な練習は、二つの数と実際の-leetcode 01-

トピック:二つの数字と
トピックがリンクします。https://leetcode-cn.com/problems/two-sum/
これはアルゴリズムLeetCodeタイトルを磨くために、私の最初の時間である、拷問LeetCode入力は、ここでは、むしろダイformat'dコードです2つの点を使用しての主なアイデアは、(使用済みのように感じます):

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> res;
        vector<int> temp(nums);
        int a =0, b = nums.size() - 1;

        sort(nums.begin(), nums.end());

        for(;a<b;)
        {
            if(nums[a] + nums[b] == target)
            {
                break;
            }
            else if(nums[a] + nums[b] < target)
            {
                a++;
            }
            else
            {
                b--;
            }
        }

        vector<int>::iterator it = find(temp.begin(), temp.end(), nums[a]);
        vector<int>::iterator is = find(temp.begin(), it, nums[b]);
        if(is != it)
        {
             res.push_back(distance(temp.begin(), is));
             res.push_back(distance(temp.begin(), it));
        }
        else
        {
            is = find(it + 1, temp.end(), nums[b]);
            res.push_back(distance(temp.begin(), it));
            res.push_back(distance(temp.begin(), is));
        }        
        return res;
    }
};

ここではスピード実行した結果、次のとおりです。

かろうじて通行可能時間は、しかし、スペースは実際にはかなりぞっとされ
一番下の近く
行うには、状況の彼の最初のタイトルよりも、私は一緒にあなたの批判や交換の進展を願っています!

公開された16元の記事 ウォンの賞賛0 ビュー288

おすすめ

転載: blog.csdn.net/DZZ18803835618/article/details/104587985
01-