Pernahkah Anda mencoba mengembangkan algoritme untuk memecahkan masalah dalam wawancara teknis? Dalam tutorial singkat ini, kita akan membahas tiga pertanyaan utama tentang desain algoritma, dimulai dengan brute force (langkah demi langkah, tetapi belum tentu efisien) dan beralih ke solusi yang lebih ramping dan elegan.

Garis menyebar
Tugas
Setelah menerima string, Anda perlu mengembangkannya.
Solusi # 1
string.substring(), str . .
β , . , myString.substring(1), .
() . . , .
, , string.charAt(). charAt : , .
.
// β1: Substring
function reverseString(str) {
let reversedString = '';
/* str
, i str.length
str, , .
*/
for (let i = str.length; i > 0; i--) {
reversedString += str.substring(i, i-1);
}
return reversedString;
}
// β2: CharAt
function reverseString(str) {
let reversedString = '';
/* str
i str.length-1 , i 0.
, ,
*/
for (let i = str.length-1; i >= 0; i--) {
reversedString += str.charAt(i);
}
return reversedString;
}
β2
β , .
:
string.split() β .
string.reverse() β .
string.join() β .
.
function reverseString(str) {
return str.split('').reverse().join('');
}
.
β1
string.split(' ') . , .
. . , , ! , .
for array.forEach(). , , .
// for
function findLongestWordLength(str) {
let maxVal = 0;
const wordArr = str.split(' ');
for(let i = 0; i < wordArr.length; i++) {
let word = wordArr[i];
if (word.length > maxVal) {
maxVal = word.length;
}
}
return maxVal;
}
// array.forEach
function findLongestWordLength(str) {
let maxVal = 0;
const wordArr = str.split(' ');
wordArr.forEach(word => {
if (word.length > maxVal) {
maxVal = word.length;
}
});
return maxVal;
}
β2
, string.split(), .
array.map(), . , .
arrOfLengths.
, Math.max(...spreadOperator) spread , .
function findLongestWordLength(str) {
const arrOfWords = str.split(' ');
const arrOfLengths = arrOfWords.map(item => item.length);
return Math.max(...arrOfLengths);
}
, . 4 .
[1,2,3,4]
[5,18,0,12]
[3,5,12,5]
[28,9,2,34]
Should return => [4,18,12,34]
β1
for-loop.
, .
// for
function largestOfFour(arr) {
let arrayOfMaxValues = [];
for (let i = 0; i < arr.length; i++) {
let subArr = arr[i];
let maxSubArrVal = 0;
for (let j = 0; j < subArr.length; j++) {
let currentValue = subArr[j];
if (currentValue > maxSubArrVal) {
maxSubArrVal = currentValue;
}
}
arrayOfMaxValues.push(maxSubArrVal);
}
return arrayOfMaxValues;
}
// forEach
function largestOfFour(arr) {
let arrayOfMaxValues = [];
arr.forEach(subArr => {
let maxSubArrVal = 0;
subArr.forEach(item => {
if (item > maxSubArrVal) {
maxSubArrVal = item;
}
});
arrayOfMaxValues.push(maxSubArrVal);
});
return arrayOfMaxValues;
}
β2
Math.max(...spreadOperator) array.map() , .
function largestOfFour(arr) {
return arr.map(subArr => Math.max(...subArr));
}
"Breaking Down JavaScript Solutions To Common Algorithmic Questions (Part 1)" by Emma Bostian
. , β !
Saya menyiarkan ini dan banyak artikel berguna lainnya untuk pengembang Frontend pemula di saluran Telegram Frontend.school () , di mana saya juga menyiapkan kuis yang berguna untuk menguji pengetahuan saya. Saya menarik perhatian Anda pada fakta bahwa saluran tersebut murni hobi dan keinginan untuk membantu serta tidak membawa manfaat materi bagi saya.