#javascript
Вопрос:
Вам дается массив положительных целых чисел. Хотя массив содержит более одного элемента, вы можете выбрать два элемента и заменить их суммой или произведением.
Ваша задача-найти максимально возможное число, которое может остаться в массиве после нескольких таких операций.
Пример Для arr = [1, 3, 2], результат должен быть 9.
чтобы максимизировать ответ, первая операция будет 1 2 (массив изменяется на [3, 3]), а следующая 3 * 3 (массив изменяется на [9]), поэтому конечный результат равен 9.
function sumOrProduct(arr) {
if(arr.length == 1) return arr[0];
arr = arr.sort();
if(arr[0] == 1){
if(arr.indexOf(2) == -1) arr.push(arr.shift() arr.shift())
else arr.push(arr.shift() arr.splice(arr.indexOf(2),1)[0])
}else arr.push(arr.shift() * arr.shift())
return sumOrProduct(arr)
}
я не понимаю этой части и почему он использует там вахтовый метод.
if(arr[0] == 1){
if(arr.indexOf(2) == -1) arr.push(arr.shift() arr.shift())
else arr.push(arr.shift() arr.splice(arr.indexOf(2),1)[0])
}else arr.push(arr.shift() * arr.shift())
Комментарии:
1. Если длина массива не определена, это скорее математическая проблема, чем проблема программирования, поскольку не так просто определить все возможные события с помощью методов, подобных брутфорсу
Ответ №1:
Это интересный вопрос, но, похоже, решение состоит в том, чтобы if there's 1, add it to the next lowest number, then multiply all the others
function sumOrProduct(arr){
arr.sort((a,b)=>a-b)
var num=arr[0]
for(let i=1;i<arr.length;i ){
if(num==1){num =arr[i]}
else{num*=arr[i]}
}
return num||0
}
console.log( sumOrProduct([1,2,3]) )
console.log( sumOrProduct([1,3,2]) )
console.log( sumOrProduct([1,5,3,2,4]) )
Что делает сдвиг, он проходит по массиву с пользовательской начальной точкой(например, a for loop
), за исключением того, что он не использует a for loop
и использует рекурсию и сдвиг для извлечения значений из массива, чтобы одно и то же число не обрабатывалось. Относительно того, почему это усложнение было сделано вместо использования цикла for? Я думаю, что человек ненавидит за петли ;-;