Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में उपसरणियों का सबसे बड़ा योग

<घंटा/>

समस्या

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो गैर-ऋणात्मक पूर्णांकों की एक सरणी लेता है, एआर, पहले तर्क के रूप में और एक पूर्णांक, संख्या, (संख्या

हमारे फ़ंक्शन का कार्य सरणी को गैर-रिक्त निरंतर उप-सरणियों में विभाजित करना है। सरणी को इस तरह विभाजित किया जाना चाहिए कि यह इन संख्या उपसरणियों के बीच सबसे बड़ी राशि को कम करता है। तब हमारे फ़ंक्शन को उप-सरणी के बीच संचित सबसे बड़ी राशि वापस करनी चाहिए।

उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

const arr = [5, 1, 4, 8, 7];
const num = 2;

तब आउटपुट होना चाहिए -

const output = 15;

आउटपुट स्पष्टीकरण

यद्यपि मूल सरणी को उप-सरणी में विभाजित करने के चार तरीके हैं, लेकिन यदि हम सरणी को दो समूहों [5, 1, 4] और [8, 7] में विभाजित करते हैं, तो इन दो समूहों में सबसे छोटा योग होगा और इन दोनों में से बड़ा है 8 + 7 =15 जो हमारे फंक्शन को वापस करना चाहिए।

उदाहरण

इसके लिए कोड होगा -

const arr = [5, 1, 4, 8, 7];
const num = 2;
const splitArray = (arr = [], num = 1) => {
   let max = 0;
   let sum = 0;
   const split = (arr, mid) => {
      let part = 1;
      let tempSum = 0;
      for (let num of arr) {
         if (tempSum + num > mid) {
            tempSum = num;
            part++;
         } else {
            tempSum += num;
         }
      }
      return part;
   };
   for (let num of arr) {
      max = Math.max(max, num);
      sum += num;
   };
   let low = max;
   let high = sum;
   while (low < high) {
      let mid = Math.floor((high+low)/2);
      let part = split(arr, mid);
      if (part > num) {
         low = mid + 1;
      } else {
         high = mid;
      }
   }
   return low;
};
console.log(splitArray(arr, num));

कोड स्पष्टीकरण:

हमने यहां द्विआधारी खोज का उपयोग यह जांचने के लिए किया है कि क्या हम सर्वोत्तम विभाजन पा सकते हैं।

आउटपुट

कंसोल में आउटपुट होगा -

15

  1. सबसे बड़ा आयत योग जावास्क्रिप्ट में संख्या से छोटा है

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले तर्क के रूप में संख्याओं की 2-डी सरणी और दूसरे तर्क के रूप में लक्ष्य योग संख्या लेता है। हमारे फ़ंक्शन को 2-डी सरणी से उस आयत का पता लगाना चाहिए जिसका सरणी में सभी आयतों में सबसे बड़ा योग है, लेकिन फ़ंक्शन के दूसरे तर्क द्वारा निर्दिष्ट

  1. योग जो जावास्क्रिप्ट में n से विभाज्य है

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले तर्क के रूप में, और एक संख्या, संख्या, दूसरे तर्क के रूप में। हमारे फ़ंक्शन को उन (सन्निहित, गैर-रिक्त) उप-सरणियों की संख्या वापस करनी चाहिए जिनका योग संख्या से विभाज्य है। उदाहरण के लिए, यदि फ़ंक्शन का

  1. जावास्क्रिप्ट में वांछित योग के साथ बाइनरी सबएरे

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक बाइनरी सरणी में लेता है, एआर, पहले तर्क के रूप में, और एक संख्या, लक्ष्य, दूसरे तर्क के रूप में। हमारा कार्य सरणी गिरफ्तारी में मौजूद उप-सरणी की संख्या की गणना करना है, जिनके तत्वों का योग गिनती के बराबर है। हमें अंततः यह गणना वापस कर