3:配列内の繰り返し数

長さnの配列のすべての数値は、0からn-1の範囲です。配列内のいくつかの数字が繰り返されていますが、繰り返し数がわかりません。各数字が何回繰り返されるかわかりません。配列内で重複する番号を見つけてください。たとえば、長さ7の入力配列が{2,3,1,0,2,5,3}の場合、対応する出力は最初に繰り返される数値2です。

class solution:
    def duplicate(self,list,duplication):
        for x in range(len(list)):
            while list[x] != x:
                if list[list[x]] == list[x]:
                    duplication.append(list[x])
                    return True
                else:
                    list[list[x]],list[x] = list[x],list[list[x]]
            return False

#このようにして、スペースを開いてスペースの複雑さを減らす必要はありません。最も完璧なソリューションになる

派生トピック:

アレイを変更できない場合はどうなりますか?
1.補助配列を使用しますが、o(n)の補助空間を増やします
。2。数を見つける方法を使用します。1とnの間で、中央の数mを見つけ、元の配列を1〜mの2つのグループに分割しますm + 1からn。1からmで、元の配列内の各数値の出現回数の合計を数えます。mより大きい場合、重複する値を見つけるための二分法検索と同様に、1からmまで繰り返される数値が続きます。

元の記事を16件公開 Likes0 Visits157

おすすめ

転載: blog.csdn.net/qq_43275748/article/details/102657786