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

जावास्क्रिप्ट में क्रमबद्ध 2-डी सरणी में वां सबसे छोटा तत्व

<घंटा/>

समस्या

मान लीजिए, हमारे पास संख्याओं के सरणियों की एक क्रमबद्ध सरणी है (बढ़ते क्रम में क्रमबद्ध) इस तरह -

const arr = [
   [ 1, 5, 9],
   [10, 11, 13],
   [12, 13, 15]
];

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

हमारा कार्य सरणी गिरफ्तारी में मौजूद संख्या के सबसे छोटे तत्व को वापस करने वाला है।

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

const arr = [
   [ 1, 5, 9],
   [10, 11, 13],
   [12, 13, 15]
];
const num = 5;

आउटपुट

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

const output = 11;

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

11 मैट्रिक्स में पांचवां सबसे छोटा तत्व है।

उदाहरण

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

const arr = [
   [ 1, 5, 9],
   [10, 11, 13],
   [12, 13, 15]
];
const num = 5;
const kthSmallest = (arr = [], num = 1) => {
   let low = arr[0][0]
   let high = arr[arr.length-1][arr[0].length-1] + 1;
   while (low < high) {
      let mid = low + Math.floor((high-low)/2);
      let count = 0;
      for (let i = 0;i<arr.length;i++) {
         for (let j=0;j<arr.length;j++) {
            if (arr[i][j] <= mid) count++;
            else break;
         }
      }
   if (count < num) low = mid+1;
      else high = mid;
   }
   return low
};
console.log(kthSmallest(arr, num));

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

यहाँ विचार है -

जब हमारे पास नियमित रूप से क्रमबद्ध 2d सरणी होती है, तो हम अपने लक्ष्य को खोजने के लिए कई तरह के इंडेक्स का उपयोग करते हैं, उदाहरण के लिए,

low = 0, high = length-1, mid = (low+high)/2

यदि लक्ष्य सूचकांक मध्य की संख्या से बड़ा है, तो हम दाहिने हिस्से को खोजते हैं, यदि यह छोटा है, तो हम बाईं ओर खोजते हैं।

हालाँकि, इस 2d arr सॉर्ट किए गए सरणी में, ऐसा मध्य अनुक्रमणिका खोजना असंभव है। यहाँ अंतर्ज्ञान हमारे k के विरुद्ध परीक्षण करने के लिए संख्याओं की एक श्रृंखला का उपयोग करना है। हम जानते हैं कि पहली संख्या सबसे छोटी है और अंतिम संख्या सबसे बड़ी है, इसका मतलब है कि हमारा लक्ष्य संख्या बीच में कुछ होना चाहिए। हम उन दो संख्याओं को अपने निम्न और उच्च के रूप में उपयोग कर सकते हैं, और हमारे मध्य को बीच की संख्या के रूप में सेट कर सकते हैं, और जांच सकते हैं कि गिरफ्तारी में कितनी संख्याएं उस संख्या से छोटी हैं और तदनुसार निम्न और उच्च समायोजित करें।

जब हमें ठीक-ठीक k अंक मिलते हैं, तो हम जानते हैं कि हमें अपना उत्तर मिल गया है। यहां बेहद मुश्किल हिस्सा यह है कि हम मध्य की गणना कैसे करते हैं, यह देखते हुए कि हम जिस संख्या का परीक्षण कर रहे हैं, वह कई बार गिरफ्तारी में भी नहीं हो सकता है, क्योंकि अंत में, हम जिन संख्याओं का उपयोग कर रहे हैं वे केवल मनमानी संख्याएं हैं।

इसे समझाने के लिए हमें यह कल्पना करने की आवश्यकता है कि हमारा कार्यक्रम एक ऐसे चरण में है जहां निम्न और उच्च लगभग एक-दूसरे से टकराने वाले हैं। यदि हम अपेक्षा से कम संख्याएँ गिनते हैं, तो हम निम्न =मध्य + 1 सेट करेंगे, यह संभावित रूप से हमारे मध्य को 1 से बढ़ा देता है। और हमारे मध्य को 1 से बढ़ाकर, हम सुनिश्चित कर सकते हैं कि संख्याएँ गिरफ्तारी में शामिल हैं।

आउटपुट

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

11

  1. जावास्क्रिप्ट का उपयोग करके एक सरणी में एक तत्व जोड़ना

    एक सरणी में एक तत्व जोड़ना विभिन्न पदों के लिए विभिन्न कार्यों का उपयोग करके किया जा सकता है। सरणी के अंत में एक तत्व जोड़ना यह पुश विधि का उपयोग करके पूरा किया जा सकता है। उदाहरण के लिए, let veggies = ["Onion", "Raddish"]; veggies.push("Cabbage"); console.log(veggies)

  1. जावास्क्रिप्ट सरणी में पहला तत्व और अंतिम तत्व?

    एक सरणी तत्वों का एक समूह है। प्रत्येक तत्व का अपना अनुक्रमणिका मान . होता है . हम इन सूचकांकों . का उपयोग करके किसी भी तत्व तक पहुंच सकते हैं . लेकिन अंतिम तत्व के मामले में, हम सूचकांक को तब तक नहीं जानते जब तक हम सरणी में मौजूद तत्वों की संख्या नहीं जानते। इस मामले में, हमें तर्क का उपयोग करना ह

  1. किसी सरणी के अंतिम तत्व को प्रिंट करने के लिए जावास्क्रिप्ट कोड

    निम्नलिखित एक सरणी के अंतिम तत्व को प्रिंट करने के लिए कोड है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .result,.sample {फ़ॉन्ट-आकार:18पीएक्स; फ़ॉन्ट-वजन:500; रंग:रेबेकापर्पल; } .परिणाम {रंग:लाल; }जावास्क्रिप्ट कोड किसी सरणी के अंतिम तत्व को प्रिंट क