Хм, это звучит не слишком сложно.
Вы можете просто l oop через прайс-лист и обновлять min и max каждый раз, что будет O (n). Я не знаю, что именно вы подразумеваете под шаг за шагом , поэтому я прокомментировал код, который вы можете понять.
const priceList = {
saturday: 10,
sunday: 20,
monday: 5,
tuesday: 3,
wednesday: 15,
thursday: 12,
friday: 25
}
function price(priceList){
var min = Infinity;
var max = 0;
for (let day in priceList){ //iterate through pricelist
let price = priceList[day];
if (price < min){ min = price } //if price was smaller than min, min = price
else if (price > max){ max = price } //if price was bigger than min, min = price
}
return max-min //return the difference between min and max
}
console.log(price(priceList));
Хотя проблема с этим кодом заключается в том, что он технически имеет больше временной сложности, чем O (n), так как let price = priceList[day];
, скорее всего, будет расти по мере роста прайс-листа. Я считаю, что следующая версия на самом деле O (n) (хотя и менее читабельная)
const priceList = {
saturday: 10,
sunday: 20,
monday: 5,
tuesday: 3,
wednesday: 15,
thursday: 12,
friday: 25
}
const prices = Object.values(priceList); //create a list of all prices
function price(prices){
var min = Infinity; //create
var max = 0;
for (let price of prices){
if (price < min){ min = price }
else if (price > max){ max = price }
}
return max-min
}
console.log(price(prices));
Надеюсь, это помогло вам! Приветствия:)