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

JavaScript में बढ़ते क्रम वाले सबसे लंबे पथ की लंबाई


बढ़ता क्रम

एक संख्या क्रम जिसमें प्रत्येक अगला तत्व पिछले तत्व से बड़ा या बराबर होता है, एक बढ़ता क्रम कहलाता है।

उदाहरण के लिए,

4, 6, 8, 9, 11, 14 बढ़ता क्रम है 
3, 3, 3, 3, 3, 3, 3 भी एक बढ़ता क्रम है

समस्या:

हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं के एक 2-D सरणी arr को एकमात्र आर्गुमेंट के रूप में लेता है। हमारे फ़ंक्शन को उस सबसे लंबे पथ की लंबाई ढूंढकर वापस करनी चाहिए जिसमें केवल बढ़ती संख्याएं हों।

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

const arr = [ 
  [4, 5, 6], 
  [4, 3, 7], 
  [3, 3, 2] 
];

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

const output = 4;

आउटपुट व्याख्या:

क्योंकि सबसे लंबा बढ़ता क्रम 4, 5, 6, 7 है।

उदाहरण

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

const arr = [ 
  [4, 5, 6], 
  [4, 3, 7], 
  [3, 3, 2] 
]; 
const longestIncreasingPath = (arr = []) => { 
  let longest = 0; 
  let dp = Array(arr.length).fill(null).map(() => 
    Array(arr[0].length).fill(1)); 
  const backtracking = (row, col) => { 
    if (dp[row][col] != 1) return dp[row][col]; 
    let dRow = [1, 0, -1, 0]; 
    let dCol = [0, 1, 0, -1]; 
    for (let i = 0; i < dRow.length; i++) { 
      let nR = row + dRow[i], nC = col + dCol[i]; 
      if (nR >= 0 && nR < arr.length && nC >= 0 && nC < arr[0].length && arr[nR][nC] > arr[row][col]) { 
        dp[row][col] = Math.max(dp[row][col], 1 + backtracking(nR, nC)) 
      }; 
    }; 
    return dp[row][col]; 
  } 
  for (let i = 0; i < arr.length; i++) { 
    for (let j = 0; j < arr[0].length; j++) { 
      longest = Math.max(longest, backtracking(i, j)); 
    }; 
  }; 
  return longest; 
}; 
console.log(longestIncreasingPath(arr));

कोड व्याख्या:

विचार

  • यहां, हमने बैकट्रैकिंग डेप्थ फर्स्ट सर्च का उपयोग किया है।

  • पुनरावृत्ति फ़ंक्शन केवल एक दिए गए पंक्ति और स्तंभ के लिए सबसे लंबा बढ़ता पथ वापस करता है।

  • यदि हमारे पास किसी स्थिति के लिए सबसे लंबे बढ़ते पथ का रिकॉर्ड पहले से है, तो हम बस उसे वापस कर सकते हैं।

आउटपुट

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

4

  1. - जावास्क्रिप्ट में शॉर्टेस्ट पाथ एल्गोरिदम

    ग्राफ थ्योरी में, शॉर्टेस्ट पाथ समस्या एक ग्राफ में दो वर्टेक्स (या नोड्स) के बीच एक पाथ खोजने की समस्या है जैसे कि इसके घटक एजेज के वजन का योग न्यूनतम हो। यहां हमें अपने add edge और add directed मेथड्स को संशोधित करने की आवश्यकता है ताकि एजेज को वजन जोड़ने की अनुमति मिल सके। आइए देखते हैं कि हम इस

  1. - जावास्क्रिप्ट में फाइबोनैचि अनुक्रम

    फाइबोनैचि संख्याएं वे संख्याएं हैं जिनमें पहली दो के बाद श्रृंखला में प्रत्येक संख्या पहले दो की योग होती है। श्रृंखला 1, 1 से शुरू होती है। उदाहरण: 1, 1, 2, 3, 5, 8, 13, 21, 34, … हम nth उत्पन्न करने के लिए एक प्रोग्राम लिख सकते हैं: function fibNaive(n) { if (n <= 1) return n; return fibN

  1. जावास्क्रिप्ट से विशिष्ट टेक्स्ट वाले div को कैसे छुपाएं? जावास्क्रिप्ट से विशिष्ट टेक्स्ट वाले div को कैसे छुपाएं?

    परिचय किसी विशिष्ट टेक्स्ट वाले div एलिमेंट को छुपाने के लिए, हम getElementsByClassName() का उपयोग करके एलिमेंट्स का चयन कर सकते हैं, उन पर पुनरावृति कर सकते हैं, और शर्त के आधार पर style.display = none सेट कर सकते हैं। उदाहरण <!DOCTYPE html> <html lang="hi"> <head> <