Как написать алгоритм для определения прибыли от продажной цены за неделю - PullRequest
0 голосов
/ 26 марта 2020

Вот прайс-лист продукта на всю неделю:

priceList = {
  saturday: 10,
  sunday: 20,
  monday: 5,
  tuesday: 3,
  wednesday: 15,
  thursday: 12,
  friday: 25
 }

 output: 22

Описание: Если вы купите этот продукт во вторник и продадите его в пятницу, вы сможете получить самую высокую прибыль .

Теперь разработайте алгоритм для достижения вашей цели.

Ограничения:

  1. Вы можете иметь только одну транзакцию. (одна покупка и одна продажа).
  2. Временная сложность вашего алгоритма не должна превышать O (n).

Пожалуйста, ответьте шаг за шагом:

Ответы [ 3 ]

1 голос
/ 27 марта 2020

Хм, это звучит не слишком сложно.

Вы можете просто 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)); 

Надеюсь, это помогло вам! Приветствия:)

0 голосов
/ 26 марта 2020

Просто повторяйте и продолжайте обновлять переменную min, если вы обнаружите какое-либо значение меньше минимального значения. Ваш ответ max_value_till_now = Math.max(max_value_till_now,day[i] - min_value);

0 голосов
/ 26 марта 2020

Я думаю, во-первых, мы должны сделать сортировку priceList. Тогда минимальное число равно cost price, а максимальное нет * sell price. Тогда прибыль составит sell price - cost price.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...