私は値をランダムに生成するリストを持ち、同じ値を2回生成することもあります。その後、私はduplicateTracker(というメソッドを持っている重複する値を見つけるためのif文?
1, 1, 2, 3, 4
)とその仕事は、リスト内の重複を見つけることです。例えば
は、int型の値を生成しました。
if else文を使用して行う必要があるという考えがあります。したがって、重複する数値が検出された場合はtrue、そうでない場合はfalseです。
どうすればよいですか?
私は値をランダムに生成するリストを持ち、同じ値を2回生成することもあります。その後、私はduplicateTracker(というメソッドを持っている重複する値を見つけるためのif文?
1, 1, 2, 3, 4
)とその仕事は、リスト内の重複を見つけることです。例えば
は、int型の値を生成しました。
if else文を使用して行う必要があるという考えがあります。したがって、重複する数値が検出された場合はtrue、そうでない場合はfalseです。
どうすればよいですか?
これはFoundationメソッドを使用していますが、ユースケースを考慮して、NSCountedSet
を生成した番号を追跡することを検討することをお勧めします。例えば。
let numbersGenerator = AnyIterator { return 1 + arc4random_uniform(10) }
var numbersBag = NSCountedSet()
for num in (0...15).flatMap({ _ in numbersGenerator.next()}) {
print(num, terminator: " ")
numbersBag.add(num)
} /* 1 3 2 2 10 1 10 7 10 6 8 3 8 10 7 4 */
print()
numbersBag.forEach { print($0, numbersBag.count(for: $0)) }
/* 1 2
2 2
3 2
4 1
6 1
7 2
8 2
10 4 */
NSCountedSet
がSequence
に準拠しているので、あなたは簡単にあなたが例えば使用したい任意の「重複診断」を抽出することができますfilter
:この機能を考えると
print("Numbers with duplicates: ", numbersBag.filter { numbersBag.count(for: $0) > 1 })
// Numbers with duplicates: [1, 2, 3, 7, 8, 10]
:
func checkForDups(_ arr1:[Int], _ arr2:[Int]) -> Bool {
let arrChecked = Set(arr1).subtracting(Set(arr2))
if Set(arr1).count != arrChecked.count {
return true
}
return false
}
ここで動作するコードです:
let arr1:[Int] = [1,1,2,3,4,5]
let arr2:[Int] = [1,10,20]
let arr3:[Int] = [10,20,30]
print(checkForDups(arr1, arr2)) // prints true
print(checkForDups(arr1, arr3)) // prints false
あなたが項目の*小さな、固定*数あれば見つけるために、 'if'ステートメントを使用することができます重複が含まれています。コンパイル時に項目の数が固定されていない場合や、大きければ(実際には3〜4が実用的な最大値)、これまで見たことのあるループとコンテナ、またはネストされたループ。 – dasblinkenlight
'set(numbers).count
dfri
最も簡単な方法は、おそらく要素を1つずつセットに追加して、それがすでにセットに入っているかどうかをチェックすることです。そうであれば、それは重複している、そうでなければ新しいものです。 – Carcigenicate