1

顧客の買い物記録を表す配列があります。たとえば、次のような配列です。

custA, item1,
custB, item1,
custA, item2,
custB, item3,
custC, item1,
custC, item3,
custD, item2,

この配列は、顧客 A が商品 1 を購入したこと、顧客 B が商品 1 を購入したこと、顧客 A が商品 2 を購入したこと、顧客 B が商品 3 を購入したことなどを示しています。 Y) は、主にアイテム X を購入した顧客によって購入されました。たとえば、上記の例では、X がアイテム 1 の場合、Y はアイテム 3 である必要があります。

4

1 に答える 1

0

1つのアプローチは、2D配列を反復処理して、item1を購入した人のリスト(または効率的に検索するためのマップ)を見つけることです。
次に、このサイクルで配列を繰り返し処理することにより、itemName と purchaseCount のマップを作成し、item1 購入者のリストに存在する人々のエントリをマップに配置します。
マップをもう一度繰り返して、目的のアイテムを見つけます。
N*2 配列の場合、このアプローチには 3N の反復が必要であり、最大 3N のスペースが必要です (バイヤー リストの場合は N、アイテム カウント マップの場合は N*2、さらにマップは追加のスペースを消費します)。

于 2012-10-10T05:21:29.907 に答える