Postingan lainnya
Errornya dmn ya?
function biggestPair (num) {
var highestInt = 0; var nextHighestInt = 0;
for (var i=0; i highestInt) { nextHighestInt = highestInt; highestInt = num[i]; } else if (num[i] > nextHighestInt) { nextHighestInt = num[i]; } else { continue; } } return highestInt + nextHighestInt; }
console.log(biggestPair(464689)); //89 console.log(biggestPair(13479)); //79
pas di run, hasilnya 0. Angka inputan ga kebaca, salahnya dmn ya?
8 Jawaban:
coba ini gan <pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;
var output = [];
var sNumber = num.toString();
for (var i = 0, len = sNumber.length; i &lt; len; i += 1) {
output.push(+sNumber.charAt(i));
}
for (var i=0; i&lt;output.length; i++) {
if (output[i+1] &gt; highestInt) {
nextHighestInt = output[i+1];
}
if (output[i] &lt; nextHighestInt) {
highestInt = output[i];
}
}
return highestInt + '' + nextHighestInt; // or return highestInt.toString() + nextHighestInt.toString();
}
console.log(biggestPair(464689)); //89
console.log(biggestPair(13479)); //79 </pre>
OK, hasilnya udh keluar gan cm klo dimasukin input ini hasilnya salah.
console.log(biggestPair(641573)); // 73 console.log(biggestPair(12783456)); // 83 console.log(biggestPair(910233)); // 91 console.log(biggestPair(71856421)); // 85 console.log(biggestPair(79918293)); // 99
klo di code atas hasilnya 37, 56, 23, 16, 23.
*edit, udh perbaiki lagi
<pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;
var output = [];
var sNumber = num.toString();
for (var i = 0, len = sNumber.length; i &lt; len; i += 1) {
output.push(+sNumber.charAt(i));
}
for (var i=0; i&lt;output.length; i++) {
if (output[i] &gt; output[i+1] && output[i+1] &gt; highestInt) {
highestInt = output[i];
} else if(output[i] &lt; output[i+1] && output[i] &gt; highestInt) {
highestInt = output[i];
}
if (output[i+1] &gt; highestInt) {
nextHighestInt = output[i+1];
}
}
return highestInt.toString() + nextHighestInt.toString();
} </pre>
btw, next higest itu angka seteleh highest sebelumnya (tidak lihat lebih kecil atau besar) atau angka hingest selanjutnya (angka lebih besar dari highest sebelumnya)?
jadi kalo pas looping ketemu angka plg gde di awal, angka itu langsung di keep jadi angka tertinggi. nah, pasangan plg tinggi setelah itu bakal jadi next highest nya. Kebetulan test casenya gda yang aneh2, jd klo ketemu angka paling besar pertama, angka keduanya selalu lbh kecil dr itu.
Masih miss gan, hasilnya 67 78 90 78 79
ekspektasi hasilnya 73 83 91 85 99
Jawaban Terpilih
coba ini gan
<pre> function biggestPair (num) { var highestInt = 0; var nextHighestInt = 0;
var output = [];
var sNumber = num.toString();
for (var i = 0, len = sNumber.length; i &lt; len; i += 1) {
output.push(+sNumber.charAt(i));
}
for (var i=0; i&lt;output.length; i++) {
if (output[i] &gt;= output[i+1] && output[i] &gt; highestInt) {
highestInt = output[i];
nextHighestInt = output[i+1];
} else if(output[i] &lt; output[i+1] && output[i] &gt; highestInt) {
highestInt = output[i];
nextHighestInt = output[i+1];
}
}
return highestInt.toString() + nextHighestInt.toString();
} </pre>
Thanks gan, it works. Ane jd belajar dr codenya. Thanks a lot.
walaupun sudah terjawab, saya ada alternatif solving yg lebih cepat. pakai Math.max() <a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max'>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max</a> yang return value terbesar dari numbers yang diberikan.
- lihat contoh ketiga dari link diatas
<pre> function biggestPair(num) { var str = num.toString(); // convert number to string var splits = []; for(let i=0; i < str.length - 1; i++) { splits.push(str[i] + str[i+1]); // push pair } return Math.max(...splits); // seperti contoh di halaman link }
console.log(biggestPair(641573)); // 73 console.log(biggestPair(12783456)); // 83 console.log(biggestPair(910233)); // 91 console.log(biggestPair(71856421)); // 85 console.log(biggestPair(79918293)); // 99 </pre>