সমস্যা বিবরণ
যেকোনো সংখ্যক নম্বর আর্গুমেন্ট হিসেবে দেওয়া আছে। এডিশন এবং সাবট্র্যাকশনের সব সম্ভাব্য কম্বিনেশনের সমষ্টি বের করে, শূন্যের সবচেয়ে নিকটবর্তী সমষ্টি রিটার্ন করতে হবে।
উদাহরণ: 1, 2, 3 → কম্বিনেশন: 1+2+3, 1-2-3, 1+2-3, 1-2+3 → সবচেয়ে নিকট শূন্য = 0
সমাধান
const findSmallestPositive = (...arr) => {
let set = new Set([Math.abs(arr[0])]);
for (let i = 1; i < arr.length; i++) {
const secondSet = new Set;
for (let d of Array.from(set)) {
secondSet.add(Math.abs(d + arr[i]));
secondSet.add(Math.abs(d - arr[i]));
}
set = secondSet;
}
return Math.min(...Array.from(set));
};
console.log(findSmallestPositive(5, 3)); // 2
console.log(findSmallestPositive(1, 2, 3)); // 0
console.log(findSmallestPositive(1, 2, 3, 5)); // 1
আউটপুট
2 0 1
অ্যালগরিদম ব্যাখ্যা
- ডাইনামিক প্রোগ্রামিং অ্যাপ্রোচ: প্রতিটি ধাপে সম্ভাব্য সমষ্টি সেটে রাখা হয়।
Setব্যবহার করে ডুপ্লিকেট এড়ানো হয়।- প্রতিটি নতুন নম্বরের জন্য পূর্বের সমষ্টিগুলোর সাথে যোগ এবং বিয়োগ করা হয়।
- এবসোলিউট ভ্যালু নেওয়া হয়েছে যাতে নেগেটিভ সমষ্টিও পজেটিভ হিসেবে ট্র্যাক হয়।