কম্পিউটার টিউটোরিয়াল

অ্যারেতে ডিস্টিংক্ট (অনন্য) উপাদানগুলোর যোগফল - JavaScript

অ্যারেতে যেসব উপাদান একবারের বেশি আসছে, সেগুলোকে একবার করেই যোগ করা।

উদাহরণ

arr = [1, 5, 2, 1, 2, 3, 4, 5, 7, 8, 7, 1]
ডিস্টিংক্ট: 1, 2, 3, 4, 5, 7, 8
যোগফল: 1+2+3+4+5+7+8 = 30

সমাধান

const distinctSum = (arr) => {
  // Set ব্যবহার করে ইউনিক উপাদান
  const unique = new Set(arr);
  
  // যোগফল
  return [...unique].reduce((sum, val) => sum + val, 0);
};

// lastIndexOf ট্রিক (মূল কোডের মতো)
const distinctSumLastIndex = (arr) => {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    // শুধু শেষ occurrence-এ যোগ করুন
    if (i === arr.lastIndexOf(arr[i])) {
      sum += arr[i];
    }
  }
  return sum;
};

// Map ব্যবহার করে (ফ্রিকোয়েন্সি ও পাওয়া যায়)
const distinctSumMap = (arr) => {
  const freq = new Map();
  for (const val of arr) {
    freq.set(val, (freq.get(val) || 0) + 1);
  }
  
  let sum = 0;
  for (const [val, count] of freq) {
    if (count >= 1) sum += val; // কমপক্ষে একবার আছে
  }
  return sum;
};

// টেস্ট
const arr = [1, 5, 2, 1, 2, 3, 4, 5, 7, 8, 7, 1];
console.log(distinctSum(arr));           // 30
console.log(distinctSumLastIndex(arr));  // 30
console.log(distinctSumMap(arr));        // 30

দ্রষ্টব্য

মূল কোডের আউটপুটে 30 দেখায়, কিন্তু কমেন্টে 20 লেখা আছে। সঠিক উত্তর 30।

পারফরম্যান্স

পদ্ধতি সময় স্থান
Set + Reduce O(n) O(n)
lastIndexOf O(n²) O(1)
Map O(n) O(n)

উৎপাদন

30
  1. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট পুনর্বিন্যাস করা যেন কোনো দুটি সমান না থাকে

  2. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্টে সাধারণ অক্ষর (ডুপ্লিকেট সহ) খুঁজে বের করা

  3. জাভাস্ক্রিপ্টে অ্যারেতে সংখ্যাগুলোর যোগফল জোড় নাকি বিজোড় যাচ্চ করা

  4. জাভাস্ক্রিপ্টে ২D অ্যারেতে অল্টারনেটিং সম (Alternating Sum) গণনা