私は失業します1日目の剣指オファー3。配列内の繰り返し数

伝染病の影響を受けて、それは家にしかなり得ません。実験室のない雰囲気は完全に塩漬けの魚です。小さな紙は先生に戻されません。今日、剣のオファーの質問をブラッシングするプロセスを始めましょう。
配列内の重複する数値を見つけます。

タイトルは次のとおりです。3.配列内の繰り返される数字

長さがnの配列numのすべての数値は、0からn-1の範囲です。配列内のいくつかの数値が繰り返されていますが、何回繰り返されているのか、また各数値が何回繰り返されているのかわかりません。配列内で重複する番号を見つけてください。

例1:

入力:
[ 2、3、1、0、2、5、3 ]
出力:2または3

class Solution {
public:
    int findRepeatNumber(vector<int>& nums) {
        int a = 0;
        int flag = 0;
        int length;
        length = nums.size();
       
       sort(nums.begin(),nums.end());
        for(int i=0;i<length-1;i++)
        {   
            if (nums[i] == nums[i+1])
            {a = nums[i];}
        }
        return a;
    }
};

複雑さをn * nにできない理由を説明したいのですが、マルチレイヤーループは香りがよいのではないですか?まず、並べ替えが使用されます。バブルの並べ替えの複雑さが増し、タイムアウトします。Nums.sort()は非常に優れています。使用しますが、原理はわかりませんが、最初に使用してみましょう。2つのパラメーターに記述されたbegin()とend()は自動的に調整されます。これは魔法のようなもので、nums.size()は配列要素を計算できます。 、私は、dark horseプログラマーが話しているsizeof(nums)/ sizeof(nums [0])はあまり使いやすいものではないことを覚えています。
元々、問題を解決するために2層ループが通常使用されていましたが、制限時間のため、forループの1層しか使用できず、隣接する配列のみを並べ替えて比較できます...
1羽の鶏、TAT
時間は早すぎ、その後1肝臓...ねえ、わかりませんあなたは仕事を見つけることができますか?悲しい

元の記事を1件公開 高く評価0件 訪問2件

おすすめ

転載: blog.csdn.net/qq_41227231/article/details/105656675