मान लीजिए कि हमारे पास संख्याओं की एक सरणी है जिसमें ठीक तीन तत्वों -1, 0 और 1 की आवृत्ति इस तरह है -
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो ऐसी एक सरणी लेता है। फ़ंक्शन को बस इस विशेष सरणी को जगह में क्रमबद्ध करना चाहिए, अर्थात, मानों को संग्रहीत करने के लिए किसी अतिरिक्त सरणी का उपयोग किए बिना।
एकमात्र शर्त यह है कि हमारा फ़ंक्शन एक रैखिक समय फ़ंक्शन होना चाहिए (केवल एक पुनरावृत्ति का उपयोग करके)।
उदाहरण
निम्नलिखित कोड है -
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1]; const sortSpecialArray = (arr = []) => { const swap = (a, b) => { let middle = arr[a] arr[a] = arr[b] arr[b] = middle }; let left = 0; let middle = 0; let right = arr.length-1; while(middle <= right){ if(arr[middle] === -1){ swap(left++, middle++); }else if(arr[middle] === 0){ middle++; }else if(arr[middle] === 1){ swap(right--, middle); } }; }; sortSpecialArray(arr); console.log(arr);
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
[ -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1 ]