मेरे पास arr = [1,3,34,44,4,45,6,76,9,98,23] के साथ एक सरणी है और ऊपर दिए गए सरणी से सबसे बड़ी संख्या बनाना चाहते हैं। ओ/पी नंबर 99876645444343231 है।

मैंने इसे संख्या के इन सेट के लिए करने की कोशिश की और यह 2 अंकों के लिए ठीक काम कर रहा है, लेकिन उससे अधिक के लिए नहीं। क्या कोई सामान्य उत्तर सुझा सकता है?

1
Bishal Jain 28 मार्च 2018, 12:33

3 जवाब

सबसे बढ़िया उत्तर

तुलना फ़ंक्शन लिखें () और संख्याओं को सॉर्ट करने के लिए इसका उपयोग करें। पहली और दूसरी दो संख्याओं को देखते हुए, हम दो संख्याओं की तुलना करते हैं, पहली दूसरी (पहले के अंत में दूसरी जोड़ी जाती है) और दूसरी पहली (दूसरे के अंत में पहली जोड़ी जाती है)। यदि फर्स्टसेकंड बड़ा है, तो पहले आउटपुट में दूसरे से पहले आना चाहिए, अन्यथा दूसरा पहले से पहले आना चाहिए।

function sortArray(arr){
    arr.sort(function compare(first,second) {
        var firstsecond ='' + first + second;
        var secondfirst ='' + second + first;
        return firstsecond>secondfirst ? -1:1;
    })
}

function getLargestNumber(arr){
    var largestNumber = arr.join('')
    return largestNumber
}
var arr = [1,3,34,44,4,45,6,76,9,98,23]
sortArray(arr)
var result = getLargestNumber(arr)
alert(result)
2
Abhijit 29 मार्च 2018, 07:12
  1. सरणी को प्रत्येक संख्या के पहले अंक के अवरोही क्रम में क्रमबद्ध करें (स्ट्रिंग्स की सरणी में परिवर्तित करके)।
  2. क्रमबद्ध सरणी के सभी नंबरों में शामिल हों।
function swapArrayElements(arr, indexA, indexB) {
  let temp = arr[indexA];
  arr[indexA] = arr[indexB];
  arr[indexB] = temp;
}

function largestNumber(arr) {
	let arrOfStrings;

	arrOfStrings = arr.map(n => n.toString());

	for(let i = 0; i < arrOfStrings.length - 1; i++) {
		for(let j = i + 1; j < arrOfStrings.length; j++) {
			if(parseInt(arrOfStrings[i] + arrOfStrings[j]) < parseInt(arrOfStrings[j] + arrOfStrings[i])) {
				swapArrayElements(arrOfStrings, i, j);
			}
		}
	}

	return arrOfStrings.join('');
}

let arr = [1,3,34,44,4,45,6,76,9,98,23];
const largestNum = largestNumber(arr);

console.log(largestNum);
0
Vishal-Lia 29 मार्च 2018, 03:52

आप स्ट्रिंग मानों और a और b और b और a के मान के साथ एक सरणी ले सकते हैं और सॉर्टिंग के लिए इसका डेल्टा ले सकते हैं, जो दर्शाता है बाद में शामिल होने के लिए अधिक मूल्य के लिए दो स्ट्रिंग का क्रमबद्ध क्रम।

function getLargest(array) {
    return array
        .map(String)
        .sort((a, b) => (b + a) - (a + b))
        .join('');
}

console.log(getLargest([1, 3, 34, 44, 4, 45, 6, 76, 9, 98, 23]));

स्ट्रिंग द्वारा सरल अवरोही छँटाई के साथ तुलना, जो गलत परिणाम (दूसरी पंक्ति) देता है।

function getLargest(array) {
    return array
        .map(String)
        .sort((a, b) => (b + a) - (a + b))
        .join('');
}

console.log(getLargest([1, 3, 34, 44, 4, 45, 6, 76, 9, 98, 23]));
console.log([1, 3, 34, 44, 4, 45, 6, 76, 9, 98, 23].sort().reverse().join(''));
4
Nina Scholz 28 मार्च 2018, 14:26