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

पहले n शब्दों की प्रगति में डुप्लिकेट तत्व खोजें जावास्क्रिप्ट

<घंटा/>

मान लीजिए, हमें संख्याओं की एक सरणी दी गई है जिसमें पहले n प्राकृतिक संख्याएँ हैं, लेकिन एक तत्व सरणी में दो बार दिखाई देता है, इसलिए तत्वों की कुल संख्या n+1 है। हमारा काम एक फ़ंक्शन लिखना है जो सरणी में लेता है और वह संख्या देता है जो रैखिक समय में दो बार दिखाई देती है।

विधि 1:Array.prototype.reduce()

. का उपयोग करना

यह थोड़ा पेचीदा तरीका है लेकिन लिखित कोड के मामले में सबसे अधिक संकुचित है। सबसे पहले, आइए इसके लिए कोड देखें -

const arr = [1,4,8,5,6,7,9,2,3,7];
const duplicate = a => a.reduce((acc, val, ind) => val+acc-
(ind+1))+a.length-1;
console.log(duplicate(arr));

यहां हमने कम फ़ंक्शन का उपयोग किया है, इसका कॉलबैक, जो सरणी के प्रत्येक तत्व के लिए एक बार संचालित होता है, हमारे मामले में तीन तर्क ले रहा है,

  • acc → संचायक, पिछले पास में लौटाया गया मान, और
  • वैल → वर्तमान तत्व मान,
  • इंड → वर्तमान तत्व का सूचकांक

अब, इस एरे पर अपना कोड लागू करते हैं -

[ 2, 3, 1, 2]

चूंकि इस सरणी की लंबाई 4 है, कॉलबैक फ़ंक्शन के कुल 4 पास होने चाहिए, लेकिन जैसा कि हमने कम () फ़ंक्शन के लिए प्रारंभिक मान तर्क प्रदान नहीं किया है, पुनरावृत्तियों को इंडेक्स 1 से शुरू किया जाएगा और संचायक को शुरू में मूल्य के साथ सौंपा जाएगा ज़ीरोथ इंडेक्स, इसलिए कुल 3 पास होंगे।

पहला पास

acc = 2, val = 3, ind = 1
return value = 2+3 - (1+1) = 3

दूसरा पास

acc = 3, val = 1, ind = 2
return value = 3+1 - (2+1) = 1

तीसरा पास

acc = 1, val = 2, ind = 3
return value = 1+2 - (3+1) = -1

सरणी का अंत

इसलिए -1 सरणी से वापस आ जाता है, और फिर

-1 + (4-1) = -1 + 3 = 2

डुप्लिकेट () फ़ंक्शन से वापस आ जाता है, जो वास्तव में सही परिणाम है।

विधि 2:Array.prototype.forEach()

इस पद्धति में, हम सरणी पर पुनरावृति करते हैं, उसका योग प्राप्त करते हैं, और उसमें से पहली (n-1) प्राकृतिक संख्याओं का योग घटाते हैं, जहाँ n सरणी की लंबाई है, जो बचता है वह वह संख्या है जो दो बार दोहराई जाती है, इसलिए हम वापस लौटते हैं यह।

उदाहरण

const arr = [1,4,8,5,6,7,9,2,3,7];
const duplicate = a => {
   let sum = 0;
   const { length: n } = a;
   a.forEach(num => sum += num);
   return sum - ((n*(n-1))/2);
}
console.log(duplicate(arr));

आउटपुट

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

7

  1. जावास्क्रिप्ट में किसी ऐरे का न्यूनतम/अधिकतम तत्व कैसे खोजें?

    किसी सरणी का न्यूनतम और अधिकतम तत्व प्राप्त करने के लिए, जावास्क्रिप्ट में Math.min() और Math.max() विधि का उपयोग करें। आप न्यूनतम और अधिकतम तत्व खोजने के लिए निम्न कोड चलाने का प्रयास कर सकते हैं - उदाहरण <html>    <body>       <script>     &nb

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

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

  1. जावास्क्रिप्ट सरणी में किसी तत्व की खोज कैसे करें?

    जावास्क्रिप्ट सरणी में किसी तत्व को खोजने के लिए निम्नलिखित कोड है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Doc