समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो संख्याओं की एक सरणी, arr, को पहली और एकमात्र आर्गुमेंट के रूप में लेता है। सरणी, arr, लंबाई N की है जिसमें 0 से N-1 तक के सभी पूर्णांक होते हैं। हमारा फ़ंक्शन सेट S की सबसे लंबी लंबाई ढूंढकर लौटाने वाला है, जहां S[i] = {A[i], A[A[i]], A[A[A[i]]], ... } निम्न नियम के अधीन है।
मान लीजिए S में पहला तत्व इंडेक्स = i के तत्व A[i] के चयन से शुरू होता है, S में अगला तत्व A[A[i]] होना चाहिए, और फिर A[A[A[i]]]... उस सादृश्य से, हम S में डुप्लिकेट तत्व आने से ठीक पहले जोड़ना बंद कर देते हैं।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है:
const arr = [5, 4, 0, 3, 1, 6, 2];
तो आउटपुट होना चाहिए:
const output = 4;
आउटपुट व्याख्या
A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2।
सबसे लंबे S[K] में से एक:
S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}उदाहरण
निम्न कोड देखें:
const arr = [5, 4, 0, 3, 1, 6, 2]; const arrayNesting = (arr = []) => { const visited = {} const aux = (index) => { if (visited[index]) { return 0 } visited[index] = true return aux(arr[index], visited) + 1 } let max = 0 arr.forEach((n, index) => { if (!visited[index]) { max = Math.max(max, aux(index)) } ) return max } console.log(arrayNesting(arr));आउटपुट
निम्न कंसोल आउटपुट है:
4