समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में।
सरणी, एआर, लंबाई एन में 0 से एन -1 तक सभी पूर्णांक होते हैं। हमारा कार्य सेट एस की सबसे लंबी लंबाई को ढूंढना और वापस करना है, जहां एस [i] ={ए [i], ए [ए [i]], ए [ए [ए [i]]], ...} अधीन है नीचे दिए गए नियम के अनुसार।
मान लीजिए कि S में पहला तत्व सूचकांक =i के तत्व A[i] के चयन से शुरू होता है, S में अगला तत्व A[A[i]] होना चाहिए, और फिर A[A[A[i]]]… उसके द्वारा सादृश्य, हम एस में डुप्लिकेट तत्व होने से ठीक पहले जोड़ना बंद कर देते हैं।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = [5, 4, 0, 3, 1, 6, 2];
तब आउटपुट होना चाहिए−
const output = 4;
आउटपुट स्पष्टीकरण
ए [0] =5, ए [1] =4, ए [2] =0, ए [3] =3, ए [4] =1, ए [5] =6, ए [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