समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में।
सरणी गिरफ्तारी, हमेशा सम लंबाई की होगी।
हमारे फ़ंक्शन को सत्य वापस आना चाहिए यदि और केवल यदि इसे पुन:व्यवस्थित करना संभव हो तो arr[2 * i + 1] =2 * arr[2 * i] प्रत्येक 0 <=i <लंबाई (arr) / 2 के लिए।पी>
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr =[4, -2, 2, -4];
तब आउटपुट होना चाहिए -
कॉन्स्ट आउटपुट =सत्य;
आउटपुट स्पष्टीकरण
[-2,-4,2,4] या [2,4,-2,-4] बनाने के लिए हम दो समूह [-2,-4] और [2,4] ले सकते हैं।
उदाहरण
इसके लिए कोड होगा -
const arr =[4, -2, 2, -4];const canRearrange =(arr =[]) => { const map =arr.reduce((acc, num) => {acc[num] =(एसीसी [संख्या] || 0) + 1 वापसी एसीसी}, {}); const कुंजियाँ =Object.keys(map) .map(key => Number(key)) .sort((a, b) => a - b) for (const key of key) { if (key <0) { जबकि (नक्शा [कुंजी]> 0) { अगर (मानचित्र [कुंजी / 2]> 0) {नक्शा [कुंजी] - =1 नक्शा [कुंजी / 2] - =1} और {झूठी वापसी}}} और { जबकि (मानचित्र) [कुंजी]> 0) {अगर (मानचित्र [कुंजी * 2]> 0) {मानचित्र [कुंजी] - =1 नक्शा [कुंजी * 2] - =1} और {वापसी झूठी}}}}} सच लौटाएं}; कंसोल. log(canRearrange(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
<पूर्व>सत्य