몇 가지 알고리즘과 해결 방법
배낭 빛
Given two items with differing weights and values, write an algorithm to carry the maximum value without exceeding your knapsack's weight.
최대값 변수 시작
let maxVal = 0;
가중치가 같으면 둘 다 최대값에 추가합니다.
if(weight1 + weight2 <= maxW){
maxVal = value1 + value2
}
그렇지 않은 경우 다른 모든 조합을 확인하십시오.
else {
if(weight1 <= maxW && value1 > value2){
maxVal = value1
} else if (weight2 <= maxW && value2 > value1) {
maxVal = value2
} else if (weight1 > maxW && weight2 <= maxW){
maxVal = value2
} else if (weight2 > maxW && weight1 <= maxW){
maxVal = value1
} else if (value1 === value2 ){
maxVal = value1
}
}
최대값을 반환합니다.
return maxVal
숫자의 원
Consider integer numbers from 0 to n - 1 written down along the circle in such a way that the distance between any two neighboring numbers is equal (note that 0 and n - 1 are neighboring, too).
Given n and firstNumber, find the number which is written in the radially opposite position to firstNumber.
해결책
거리를 2로 나누어 중간점 찾기(반올림)
let halfway = Math.round(n/2)
firstNumber에 중간 지점 추가
let total = firstNumber + halfway
숫자가 전체보다 작으면 답입니다. 그렇지 않은 경우 총계에서 거리를 뺍니다.
if(total >= n){
return total - n
} else {
return total
}
교대 합계
Sum alternating numbers in an array.
해결책
합계를 정의합니다.
let total1 = 0
let total2 = 0
인덱스를 사용하여 대체 숫자를 추가하려면 반복합니다.
for(let i = 0; i < a.length; i++){
if(i % 2 == 0){
total2 += a[i]
} else {
total1+= a[i]
}
푸시 합계는 새 배열입니다.
let newArray = []
newArray.push(total2, total1)
return newArray
가장 긴 문자열
Given an array of strings, return another array containing all of its longest strings.
해결책
가장 긴 문자열을 모두 저장할 배열을 만듭니다.
가장 긴 문자열의 길이를 유지하는 len 값을 만들고 0으로 설정합니다.
var len = 0;
var longest = [];
문자열 배열을 반복합니다. 가장 긴 문자열을 찾아 len 값으로 설정합니다.
for (var i = 0; i < inputArray.length; i++){
if(inputArray[i].length > len){
len = inputArray[i].length
}
}
별도의 for 루프에서 배열을 반복합니다. 문자열의 길이가 len 값과 같으면 가장 긴 배열로 푸시합니다.
for (var j = 0; j < inputArray.length; j++){
if(inputArray[j].length === len){
longest.push(inputArray[j])
}
}
가장 긴 배열을 반환합니다.
return longest
isLucky
Given an even integer, return true if the first half of numbers equals the second half.
해결책
정수 배열 만들기
const arr = []
while (n > 0){
let lastDigit = n % 10
arr.push(lastDigit)
n = Math.floor(n/10)
}
배열을 두 부분으로 나눕니다.
const half = Math.ceil(arr.length / 2);
const firstHalf = arr.splice(0, half)
const secondHalf = arr.splice(-half)
각 절반의 합계를 합산합니다. 합계가 일치하면 true를 반환
let totalOne = 0;
let totalTwo = 0;
for(let i = 0; i < firstHalf.length; i++){
totalOne += firstHalf[i]
}
for(let i =0; i < secondHalf.length; i++){
totalTwo += secondHalf[i]
}
if(totalOne === totalTwo){
return true
} else {
return false
}
결론
이들 중 일부는 내가 얼마 전에 만들었고 DRY-er 코드를 만드는 몇 가지 최적화와 방법을 이미 볼 수 있습니다. 나는 또한 for 루프를 사용하는 것을 좋아한다는 것을 알아차렸습니다. 앞으로는 every, some 및 map과 같은 더 많은 기본 제공 메서드를 통합하고 싶습니다.
Reference
이 문제에 관하여(몇 가지 알고리즘과 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kahawaiikailana/a-few-algorithms-and-how-to-solve-them-pem텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)