কম্পিউটার

এই "2 সমষ্টি" প্রশ্ন জাভাস্ক্রিপ্ট কোড করার আর কোন কার্যকর উপায় আছে কি?


আমাদের কাজ হল একটি ফাংশন লেখা যা সর্বাধিক রৈখিক সময়ে দুই-সমস্যার সমস্যা সমাধান করে।

দুই সমষ্টি সমস্যা

পূর্ণসংখ্যার একটি অ্যারে দেওয়া হলে, আমাদের দুটি সংখ্যা খুঁজে বের করতে হবে যাতে তারা একটি নির্দিষ্ট লক্ষ্য সংখ্যার সাথে যোগ করে।

ফাংশন twoSum দুটি সংখ্যার সূচকগুলি প্রদান করবে যা লক্ষ্যে যোগ করে এবং যদি লক্ষ্যে দুটি উপাদান যোগ না হয় তবে আমাদের ফাংশনটি একটি খালি অ্যারে প্রদান করবে৷

O(n) সময়ে সমস্যা সমাধান করা

ইতিমধ্যে উপস্থিত আইটেমগুলির রেকর্ড রাখতে আমরা একটি হ্যাশম্যাপ ব্যবহার করব, প্রতিটি পাসে আমরা মানচিত্রটিতে এমন কোনও উপাদান রয়েছে কিনা তা পরীক্ষা করব যা বর্তমান উপাদানটিতে যোগ করা হলে লক্ষ্যমাত্রা পর্যন্ত যোগ করা হয়, যদি থাকে তবে আমরা একটি অ্যারে সম্বলিত অ্যারে ফিরিয়ে দেব। তাদের সূচকগুলি এবং যদি আমরা এই শর্তটি সন্তুষ্ট না করে পুরো লুপটি নিয়ে যাই, আমরা একটি খালি অ্যারে ফিরিয়ে দেব৷

উদাহরণ

const arr = [2, 5, 7, 8, 1, 3, 6, 9, 4];
const sum = 10;
const twoSum = (arr, sum) => {
   const map = {};
   for(let i = 0; i < arr.length; i++){
      const el = sum - arr[i];
      if(map[el]){
         return [map[el], i];
      };
      map[arr[i]] = i;
   };
   return [];
};
console.log(twoSum(arr, sum));
console.log(twoSum(arr, 12));
console.log(twoSum(arr, 13));
console.log(twoSum(arr, 14));
console.log(twoSum(arr, 24));

আউটপুট

কনসোলে আউটপুট হবে −

[ 2, 5 ]
[ 1, 2 ]
[ 1, 3 ]
[ 3, 6 ]
[]

  1. জাভাস্ক্রিপ্টের প্রতিটি সূচকে ক্রমবর্ধমান সমষ্টি

  2. জাভাস্ক্রিপ্টে জোড় বা বিজোড় হিসাবে অ্যারের যোগফল নির্ণয় করা

  3. জাভাস্ক্রিপ্টে সর্বাধিক সম্ভাব্য জোড়া যোগফল অর্জন করা

  4. জাভাস্ক্রিপ্টে পার্টিশনের গড় সর্বোচ্চ যোগফল