PDA

View Full Version : حرفه ای: پيشنهاد يك كد بهينه براي بدست آوردن فقط اعضاي تكراري در 2 آرايه



mahdikoochooloo
پنج شنبه 24 مرداد 1392, 22:48 عصر
سلام دوستان
اميدوارم حال همه خوب باشه
من دو تا آرايه يونيك دارم كه مي خوام فقط عناصر تكرار شده در هر دو نشون داده بشه
مثلا
{1,2,3,4,5,6}
{4و5و6و7و8}
و برنامه فقط 4و5و6 رو نشون بده
با يك حلقه و زمان O(n‌ميشه رديفش كرد اما آيا دوستان هيچ كد ميانبري براي سي شارپ سراغ دارن؟

تشكر

mahdikoochoolooo
پنج شنبه 24 مرداد 1392, 23:55 عصر
مي توني از اين كد استفاده كني
int[] listOfItems1 = temp[al].Concat(temp[rand[cx]]).ToArray();
var duplicates = listOfItems1.GroupBy(g => g).Where(w => w.Count() > 1).Select(s => s.Key);
foreach (var d in duplicates)
{
xy1 = xy1 + user[al, d] * user[rand[cx], d];
}

Mahmoud.Afrad
جمعه 25 مرداد 1392, 02:45 صبح
سلام دوستان
اميدوارم حال همه خوب باشه
من دو تا آرايه يونيك دارم كه مي خوام فقط عناصر تكرار شده در هر دو نشون داده بشه
مثلا
{1,2,3,4,5,6}
{4و5و6و7و8}
و برنامه فقط 4و5و6 رو نشون بده
با يك حلقه و زمان O(n‌ميشه رديفش كرد اما آيا دوستان هيچ كد ميانبري براي سي شارپ سراغ دارن؟

تشكر
چجوری میخوای با مرتبه n پیاده اش کنی. برام سوال شد.




مي توني از اين كد استفاده كني
int[] listOfItems1 = temp[al].Concat(temp[rand[cx]]).ToArray();
var duplicates = listOfItems1.GroupBy(g => g).Where(w => w.Count() > 1).Select(s => s.Key);
foreach (var d in duplicates)
{
xy1 = xy1 + user[al, d] * user[rand[cx], d];
}
خیلی به خودت سخت میگیری. با intersect میتونی اشتراک بگیری:

int[] arr1 = {1, 2, 3, 4, 5, 6};
int[] arr2 = {4, 5, 6, 7, 8, 9};
List<int> intersectLst = arr1.Intersect(arr2).ToList();