একই মান একাধিকবার রিপিট হয়েছে এমন উপাদানগুলো শুধুমাত্র একবার করে সংগ্রহ করা।
উদাহরণ
input: [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4] output: [1, 4, 3, 2] // শুধু যেসব একাধিকবার এসেছে
সমাধান
const pickDuplicates = (arr) => {
const seen = new Set();
const duplicates = new Set();
for (const item of arr) {
if (seen.has(item)) {
duplicates.add(item);
} else {
seen.add(item);
}
}
return [...duplicates];
};
// বিকল্প: indexOf/lastIndexOf (স্লোয়ার)
const pickDuplicatesSlow = (arr) => {
const result = [];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) {
if (!result.includes(arr[i])) {
result.push(arr[i]);
}
}
}
return result;
};
// ফ্রিকোয়েন্সি ম্যাপ ব্যবহার (বহুতর ইনফো দরকার হলে)
const pickDuplicatesWithCount = (arr) => {
const freq = new Map();
for (const item of arr) {
freq.set(item, (freq.get(item) || 0) + 1);
}
return [...freq.entries()]
.filter(([_, count]) => count > 1)
.map(([item]) => item);
};
// টেস্ট
const arr = [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4];
console.log(pickDuplicates(arr)); // [1, 4, 3, 2]
console.log(pickDuplicatesWithCount(arr)); // [1, 4, 3, 2]
পারফরম্যান্স তুলনা
| পদ্ধতি | সময় জটিলতা | নোট |
|---|---|---|
| Set (দুইবার) | O(n) | সেরা পারফরম্যান্স |
| Map (ফ্রিকোয়েন্সি) | O(n) | কাউন্ট ও পাওয়া যায় |
| indexOf/lastIndexOf | O(n²) | বড় অ্যারে জন্য ধীর |
উৎপাদন
[1, 4, 3, 2]