সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসাবে সংখ্যার একটি অ্যারে নেয়।
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