アルゴリズムの意図的な練習-LeetCode戦闘-03取り外し要素

トピック:削除する要素

トピックリンク:(https://leetcode-cn.com/problems/remove-element/)
第一印象:
昨日の同じ要素の除去と同様に
(参照します。https://blog.csdn.net/DZZ18803835618/article /詳細/ 104607900)
まず、によってもたらさ2ポインタのアイデア:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int len = nums.size();
        if(len == 0) return 0;
        int i = 0;
        for(int j = 0; j < len; j++)
        {
            if(nums[j] != val)
            {
                nums[i] = nums[j];
                i++;
            }
        }
    return i;
    }
};

しかし、あまりにも遅い:
ここに画像を挿入説明
2回の試行:
少しを試し、公式の答えを読んで、本当に速度が倍に倍増(多くはないテストケースが理由の要素を削除する必要がおそらくあるため)
原則は、おそらくこれです:のみの場合要素を削除するには、要素は「に比べて、この要素の最後のビット、配列の長さマイナス1で覆われている第一印象のコピー要素の多くを削除することなく、時間を節約するために」が、取り除かれた要素を大量に必要となりますテストケースは、時間がほぼ同じでなければなりません。コードは以下の通りであります:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int n = nums.size();
        int i = 0;
        while(i < n)
        {
            if(nums[i] == val)
            {
                nums[i] = nums[n - 1];
                n--;
            }
            else
            {
                i++;
            }
        }
        return n;
    }
};

ここでは、私は彼らの習慣の使用が理由かもしれないが、使用のためのループ構造を習慣的に使用使用されるたびに、より洗練された、だけでなく、特定のシーンの具体的な分析かもしれいくつかの単語を言いたいです。
ここに画像を挿入説明
3回:
この時点では、速度はかなりもっともらしい、知らず知らずのうちにこの直接排除する要素を発見した後、)最速のソリューションのユースケースを開き、消去STLコンテナを(使用できることが判明するポイント:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        for(int i = 0;i < nums.size(); i++)
        {
            if(nums[i] == val)
            {
                nums.erase(nums.begin() + i);
                i--;
            }
        }
        return nums.size();
    }
};

結果の書き込みと自信を持って提出した後:
ここに画像を挿入説明
不屈の精神を戦って、そして再送信すると、私は唯一の人々の30%を破ったのはこの非科学的、ああ、同じコードを、その品質ごとに時間を見つけて飛躍はああ~~
ここに画像を挿入説明
彼らは彼らのコードは非常に洗練されていることを感じるが、時間が不十分で与えられた場合、あなたが複数回試すことができ、将来的に誰もが思える(あなたがそれを知っている場合でも、非常に暴力的な場合)

余談
コードを書くのその前に、私の非常に好きではない、それは非常に好きではないが、しかし、最終的に彼の位置を認識しています。各記事の最後の文は、それに取り付けられた後、ジュニアコンピュータとしてコバンの意識は今、非常に遅く、気分に応じて、自分のモチベーション、そして相互の励ましの王を頼りとすることができます。

決して早い、決して遅

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

おすすめ

転載: blog.csdn.net/DZZ18803835618/article/details/104625215